需要一些MySQL排名查询的解释

时间:2012-04-17 15:32:15

标签: mysql sql

我希望得到一些我遇到的排名查询的解释。我有一个类似的设置,我有一个我想订购的积分字段,但不能在我的生活中理解这个查询:http://www.artfulsoftware.com/infotree/queries.php#460

我不明白连接实际上在做什么,以及为什么如果我不包括group by语句,我只会得到一条完全混乱且不正确的记录。我总是将Group By语句看作限制结果的数量,但是这个查询似乎是将它们添加到最终结果集中(因为没有group by,你得到一行返回)

1 个答案:

答案 0 :(得分:1)

查询基本上是这样做的:

对于原始投票表中的每一行,计算有多少行(在同一个表中)对该行的投票< =。计数与排名相同。

需要JOIN将投票表链接到投票表中的每一行。

在选择列表中有COUNT()时需要GROUP BY。对于每个人,查询计算它找到的具有每个人的投票数< =的行数。带有COUNT的GROUP BY限制了JOIN结果的结果数,这是原始投票表的乘法。

相关问题