mysql - SQL 查询仅显示 28 个预期行中的 14 个
问题描述
我下面的 SQL 查询应该显示 28 个结果,但它只显示 14 个。
我认为这与我的联接有关,其中一个表根本没有丢失结果的记录,但如果是这种情况,我希望它显示为 NULL:
SELECT c.Name, u.Id, u.From, u.Send, COUNT(al.Id) as Total
FROM Auction_Location al
LEFT JOIN US u ON u.Id = al.CId
LEFT JOIN City c ON c.Id = u.CityId
WHERE al.CityId IN (983, 984)
GROUP BY c.Name, u.Id, u.From, u.Send
ORDER BY c.Name ASC;
解决方案
您的WHERE
子句正在将外部联接转变为内部联接。将条件移至ON
子句:
SELECT b.Name, b.Id, b.First, b.Second, COUNT(c.Id) as Total
FROM Table1 a LEFT JOIN
Table2 b
ON b.Id = a.MyId LEFT JOIN
Table3 c
ON c.Id = b.CId AND c.Id IN (9, 10)
GROUP BY b.Name, b.Id, b.First, b.Second
ORDER BY b.Name ASC;
请注意,我更改了 ,COUNT()
因此它计算匹配项table3
而不是table1
. 我修复了SELECT
andGROUP BY
子句,使它们匹配。
推荐阅读
- elasticsearch - Elasticsearch 会复制我的数据吗?
- javascript - 如何根据工作日名称按升序对对象进行排序,但数组应以今天的日期名称开头
- python - 如何将参数发送到 Flask restful 服务构造函数?
- java - EJB 拦截器。如果事务未提交,则捕获异常
- angular - 离子重定向问题中的角度firebase auth signInWithRedirect
- sql-workbench-j - 如何关闭 SQLWorkbenchJ 中的所有选项卡?
- ruby - AES 256 CBC 使用 Ruby 加密,OpenSSL 不起作用
- javascript - 尝试使用具有相似类名 Javascript 和 HTML 的相同函数
- r - 如何以简明扼要的方式对数据进行分类?
- powershell - 如何将 CSV 文件中的 2 个相邻列合并为一列,用逗号分隔?(电源外壳)