MySQL的计数(*)无法正常工作

时间:2012-06-10 01:45:55

标签: mysql count

我想计算game_votes g_id等于14的所有行,它的效果差不多,但如果没有{{1}的任何记录它仍会在g_id = 14字段中显示1

这是我的问题:

cnt

什么错了?我错过了什么吗?

4 个答案:

答案 0 :(得分:2)

检查

的结果
SELECT *
FROM (`games`)
LEFT JOIN `game_votes`
ON
     `game_votes`.`g_id` = `games`.`id`
WHERE `games`.`id` = '14'

您将看到使用LEFT JOIN(而不是JOIN)是原因。

答案 1 :(得分:2)

您的计数为1,因为COUNT(*)实际上是计算结果集中的行数。由于您从游戏桌中选择了一行ID为14并且将其加入到game_votes表中,只要存在ID为14的游戏,您将始终拥有1行或更多行是否在您的game_votes表中包含任何相应的投票。而不是COUNT(*),请尝试COUNT(game_votesg_id)。如果没有投票,则g_id字段将包含空值,并且COUNT()在其计算中不包含空值。

答案 2 :(得分:1)

SELECT SUM(vote) as vote, COUNT(*) as cnt from games,game_votes where game_votes.g_id=games.id and games.id=14;

这应该有效

答案 3 :(得分:0)

MySQL SUM函数需要GROUP BY ...请参阅http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html