我想从名为continent
的表中获取每个Country
的计数:
SELECT continent, count(*) totalcount from Country
它返回表格中的记录总数,只有一个大陆。
我的语法有问题吗?我在网上找到了其他类似的示例,但返回所有唯一值并附带计数。我不知道自己做错了什么。
答案 0 :(得分:0)
您需要group by子句:
SELECT continent,count(*) totalcount from Country group by continent
答案 1 :(得分:0)
指令计数(*)是一个聚合指令,因此它只返回一行。你应该尝试像
这样的东西SELECT continent, count(*) totalcount FROM Country GROUP BY continent
为了拥有每个大陆的国家数量......
编辑:太晚了;)
答案 2 :(得分:0)
如果您有聚合函数,则所选的所有其他列应为聚合或在组中提及。 MySQL尽管它有一个宽松的方法来满足这个要求,你仍然应该总是尝试这样做。 添加
GROUP BY `continent`
在这种情况下会起作用
聚合函数列表
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
提及
如果在不包含GROUP BY的语句中使用组函数 子句,它相当于对所有行进行分组
关于mysql的group by
http://dev.mysql.com/doc/refman/5.1/en/group-by-handling.html