当前位置:  开发笔记 > 编程语言 > 正文

SQL GROUP BY/COUNT即使没有结果

如何解决《SQLGROUPBY/COUNT即使没有结果》经验,为你挑选了1个好方法。

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

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;

我究竟做错了什么?



1> Michael Hare..:

你需要做一个左连接:

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

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

SELECT g.Game_Number, G.PutColumnsHere,
  (SELECT COUNT(*) FROM Tickets T WHERE t.Game_Number = g.Game_Number) Tickets_Count
FROM Games g

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

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有