【问题标题】:Mysql count left join strange resultmysql count left join 奇怪的结果
【发布时间】:2019-07-21 07:48:40
【问题描述】:

有人可以帮我理解这些结果吗? (对我来说,所有 3 都应该返回 6455)。

(使用RDS mysql-8.0.13)


SELECT COUNT(p.product_id) FROM product p LEFT JOIN product_attributes pa ON p.pdt_id = pa.pdt_id WHERE pa.code = 'season';

结果:6332


SELECT COUNT(*) FROM product p;

结果:6455


SELECT COUNT(p.product_id) FROM product p LEFT JOIN product_attributes pa ON p.pdt_id = pa.pdt_id AND pa.code = 'season';

结果:6455

【问题讨论】:

    标签: mysql count left-join amazon-rds mysql-8.0


    【解决方案1】:

    您的第一个连接使用 WHERE 子句,这意味着选择所有行,包括具有空连接的行,然后过滤掉那些 WHERE pa.code = season,即空连接。

    最后一个连接两个,但是因为它是左连接,所以您仍然可以获得完整的结果表,并且没有任何内容被过滤,因为您删除了 WHERE 子句。如果您要在最后一个查询中使用 INNER JOIN,您应该会得到相同的结果 (6332)。

    这个链接可能有用What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?

    【讨论】:

      猜你喜欢
      • 2020-07-29
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 2012-06-13
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      相关资源
      最近更新 更多