PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Quelle est la syntaxe équivalente pour Outer Apply dans PostgreSQL

C'est une jointure latérale :

SELECT table1.col1, table1.col2, Supp.ID, Supp.Supplier
FROM SIS_PRS table1 LEFT JOIN LATERAL
     (SELECT ID, SupplierName
      FROM table2
      WHERE table2.ID = table1.SupplierID
      FETCH FIRST 1 ROW ONLY
     ) Supp
     ON true;

Cependant, vous pouvez vous en approcher assez dans l'une ou l'autre base de données avec juste une sous-requête corrélée :

SELECT table1.col1, table1.col2, table1.SupplierID, 
       (SELECT Name
        FROM table2
        WHERE table2.ID = table1.SupplierID
        FETCH FIRST 1 ROW ONLY
       ) as SupplierName
FROM SIS_PRS table1;

Notez également que dans les deux bases de données, la récupération d'une ligne sans ORDER BY est suspect.