sql - 未显示所有左表值的左连接

标签 sql join left-join

LEFT JOIN 应该显示左表中的所有行,但是在运行以下查询时,我只获取计数为 1 或更多的位置值。请有人给我一些关于我可能出错的指导:

SELECT places.placeId,
       placeName,
       COUNT(orderId) AS orderCount
FROM   places
       LEFT JOIN orders
         ON places.placeId = orders.placeId
WHERE  places.companyId = 1
       AND stateId = 1
       AND orderstateId = 1
       AND orderName NOT LIKE 'Delivery%'
GROUP  BY places.placeId,
          places.placeName
ORDER  BY orderCount DESC,
          placeName ASC 

提前致谢

最佳答案

您的 WHERE条件转换 OUTER JOIN回到 INNER JOIN .

不匹配的行将有 NULL所有的orders列并被 WHERE 消除条款。试试这个。

SELECT places.placeId,
       placeName,
       COUNT(orderId) AS orderCount
FROM   places
       LEFT JOIN orders
         ON places.placeId = orders.placeId
       AND orders.stateId = 1
       AND orders.orderstateId = 1
       AND orders.orderName NOT LIKE 'Delivery%'
WHERE  places.companyId = 1
GROUP  BY places.placeId,
          places.placeName
ORDER  BY orderCount DESC,
          placeName ASC 

关于sql - 未显示所有左表值的左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675162/

相关文章:

mysql - 如何从 mysql 连接接收 1 行而不是 4 行

mysql - LEFT JOIN 与所有连接表的 id 列

mysql - 将记录带入表 A 而不是带入表 B 左外连接

mysql - 带 COUNT 的 LEFT JOIN 返回意外值

sql - 什么会导致链接服务器返回有限数量的数据?

mysql - 内连接没有匹配的列

SQL 查询,我从另一个表的时间戳中获取最新的行

php - 与另一个表没有关系的 LeftJoin 别名创建问题 Doctrine Symfony

sql - 如何在 SQL 中不显示计数列

javascript - 在另一个页面中反射(reflect)从数据库中存储的单选切换按钮选择