为什么连接查询给出与子查询不同的结果?
Why join query give different result than subquery?
我正在学习 PostgreSQL 并使用 Nortwind database
现在我正在测试 JOIN
和 ANY
的子查询
我想要 select 全部 product_name
,其中刚好订购了 10 个(来自 order_details
的 quantity
列)
所以我有 2 个不同的查询:
SELECT product_name FROM products
WHERE product_id = ANY(
SELECT product_id FROM order_details
WHERE quantity = 10
)
和
SELECT products.product_name FROM products
JOIN order_details ON order_details.product_id = products.product_id
WHERE order_details.quantity = 10
但是他们给出了不同的结果!
第一个给出:
Only 60 rows
第二个给出:181 rows
为什么会这样,哪个结果是正确的?
第一个查询将最多输出每个 products
行一次。
对于单个 products
行,第二个查询可以有多个结果行:每个匹配的 order_details
行一个。
哪种查询更好取决于您的要求。
我正在学习 PostgreSQL 并使用 Nortwind database
现在我正在测试 JOIN
和 ANY
的子查询
我想要 select 全部 product_name
,其中刚好订购了 10 个(来自 order_details
的 quantity
列)
所以我有 2 个不同的查询:
SELECT product_name FROM products
WHERE product_id = ANY(
SELECT product_id FROM order_details
WHERE quantity = 10
)
和
SELECT products.product_name FROM products
JOIN order_details ON order_details.product_id = products.product_id
WHERE order_details.quantity = 10
但是他们给出了不同的结果!
第一个给出:
Only 60 rows
第二个给出:181 rows
为什么会这样,哪个结果是正确的?
第一个查询将最多输出每个 products
行一次。
对于单个 products
行,第二个查询可以有多个结果行:每个匹配的 order_details
行一个。
哪种查询更好取决于您的要求。