为什么连接查询给出与子查询不同的结果?

时间:2021-03-04 07:19:01

标签: sql postgresql join subquery northwind

我正在学习 PostgreSQL 并与 Nortwind database
一起工作
现在我正在使用 JOIN
测试 ANY 和子查询 我想选择所有 product_name,其中正好 10 个被订购(来自 quantityorder_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

为什么是这样,哪个结果是正确的?

1 个答案:

答案 0 :(得分:0)

第一个查询最多输出每个 products 行一次。

对于单个 products 行,第二个查询可以有多个结果行:每个匹配的 order_details 行一个。

哪个查询更好取决于您的要求。

相关问题