PostgreSQL 中外部应用的等效语法是什么
What is the equivalent Syntax for Outer Apply in PostgreSQL
我正在尝试查找 SQL 查询,了解 OUTER APPLY 从 MSSQL 到 PostgreSQL 的等效用法,但似乎很难找到。
我的 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
这是横向连接:
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
是可疑的。
我正在尝试查找 SQL 查询,了解 OUTER APPLY 从 MSSQL 到 PostgreSQL 的等效用法,但似乎很难找到。
我的 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
这是横向连接:
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
是可疑的。