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

Why join query give different result than subquery?

我正在学习 PostgreSQL 并使用 Nortwind database

现在我正在测试 JOINANY
的子查询 我想要 select 全部 product_name,其中刚好订购了 10 个(来自 order_detailsquantity 列)
所以我有 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 行一个。

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