首页 > 解决方案 > 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;

标签: mysqlsql

解决方案


您的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. 我修复了SELECTandGROUP BY子句,使它们匹配。


推荐阅读