web-dev-qa-db-ja.com

PostgreSQLでの外部適用の同等の構文は何ですか

MSSQLからPostgreSQLへのOUTERAPPLYの同等の使用法に関するSQLクエリを見つけようとしていますが、見つけるのが難しいようです。

私のMSSQLサンプルクエリは次のようなものです。

誰かが私の問題を手伝ってくれることを願っています。前もって感謝します。

SELECT table1.col1, table1.col2, Supp.ID, Supp.Supplier

FROM SIS_PRS table1 

OUTER APPLY (SELECT TOP 1 ID, SupplierName  FROM table2 WHERE table2.ID = table1.SupplierID) AS Supp
8
ayanix

これは横方向の結合です。

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;

ただし、相関サブクエリを使用するだけで、どちらのデータベースにもかなり近づくことができます。

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;

また、両方のデータベースで、ORDER BYのない1つの行をフェッチすることは疑わしいことに注意してください。

12
Gordon Linoff