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/