【发布时间】:2014-03-25 02:26:19
【问题描述】:
我正在使用 SQL 中的相关子查询和非相关子查询,并且我试图通过这两种类型的查询获得相同的结果。我的问题与我的非相关子查询有关。查询运行但不返回任何结果。我的相关子查询确实返回结果,就像它应该的那样。我需要帮助来确定我的简单非相关子查询是否写错了。任何帮助是极大的赞赏。我的查询如下:
--不相关子查询
SELECT *
FROM hr.bc_products p
WHERE p.sku NOT IN (SELECT ol.sku FROM hr.bc_orderlines ol);
--相关子查询
SELECT *
FROM hr.bc_products p
WHERE NOT EXISTS (SELECT ol.sku FROM hr.bc_orderlines ol WHERE ol.sku = p.sku);
【问题讨论】:
-
fwiw,我倾向于用排除连接来写这个:
SELECT p.* FROM hr.bc_products p LEFT JOIN hr.bc_orderlines ol ON p.sku = ol.sku WHERE ol.sku IS NULL -
这是有道理的。让我试试看。
标签: sql subquery correlated-subquery