我正在学习 PostgreSQL 并与 Nortwind database
一起工作
现在我正在使用 JOIN
测试 ANY
和子查询
我想选择所有 product_name
,其中正好 10 个被订购(来自 quantity
的 order_details
列)
所以我有 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
为什么是这样,哪个结果是正确的?
答案 0 :(得分:0)
第一个查询最多输出每个 products
行一次。
对于单个 products
行,第二个查询可以有多个结果行:每个匹配的 order_details
行一个。
哪个查询更好取决于您的要求。