【问题标题】:Why join query give different result than subquery?为什么连接查询给出与子查询不同的结果?
【发布时间】:2021-06-02 19:38:33
【问题描述】:

我正在学习 PostgreSQL 并使用 Nortwind database

现在我正在测试JOIN 并使用ANY 进行子查询
我想选择所有product_name,其中正好有10个被订购(来自order_details的列quantity
所以我有两个不同的查询:

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

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

【问题讨论】:

  • 它们返回的行数不同,它们是完全不同的查询

标签: sql postgresql join subquery northwind


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2014-06-18
    • 2011-01-14
    相关资源
    最近更新 更多