SQL GROUP BY/COUNT即使没有结果

Wic*_*wok 2 mysql sql

我试图从一个表(游戏)中获取信息,并计算与第一个表中的每个条目对应的另一个表(票证)中的条目.我希望返回第一个表中的每个条目,即使第二个表中没有任何条目.我的查询如下:

SELECT g.*, count(*) 
FROM games g, tickets t 
WHERE (t.game_number = g.game_number
   OR NOT EXISTS (SELECT * FROM tickets t2 WHERE t2.game_number=g.game_number))
GROUP BY t.game_number;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Mic*_*ren 5

你需要做一个左连接:

SELECT g.Game_Number, g.PutColumnsHere, count(t.Game_Number) 
FROM games g
LEFT JOIN tickets t ON g.Game_Number = t.Game_Number
GROUP BY g.Game_Number, g.PutColumnsHere
Run Code Online (Sandbox Code Playgroud)

或者,我认为相关子查询更清晰一些:

SELECT g.Game_Number, G.PutColumnsHere,
  (SELECT COUNT(*) FROM Tickets T WHERE t.Game_Number = g.Game_Number) Tickets_Count
FROM Games g
Run Code Online (Sandbox Code Playgroud)

只需确保检查查询计划以确认优化程序能够很好地解释这一点.