mysql中有两个表:校友和callres。
校友表的主键是alumid。它有14483个记录。
callres表的主键是callkey,它有一个索引字段alumid(它是校友的外键,但没有正式的约束条件来指定。)callres有大约18000个REC。
下面的查询工作正常(0.2秒,14461个结果行)
SELECT ALUMNI.AlumID, MAX(CALLRES.CallTime), COUNT(CALLRES.Outcome)
FROM ALUMNI JOIN CALLRES ON (ALUMNI.AlumID = CALLRES.AlumID)
GROUP BY ALUMNI.AlumID
但是,没有列出没有callres记录的校友(没有太多:14483-14461=22正在丢失。)
我想让他们在列表中,所以我想左连接,而不是连接。我猜添加的记录在聚合列中将有null。
这允许吗?
当我仅仅通过将“join”更改为“left join”来更改查询时,不会出现错误,但查询无限期地存在。所以:
SELECT ALUMNI.AlumID, MAX(CALLRES.CallTime), COUNT(CALLRES.Outcome)
FROM ALUMNI LEFT JOIN CALLRES ON (ALUMNI.AlumID = CALLRES.AlumID)
GROUP BY ALUMNI.AlumID
需要“永远”。谢谢你的建议。
1条答案
按热度按时间h6my8fg21#
如果要获取缺少的列表,可以执行以下操作:
或者
我认为第一个sql更好。