我希望得到一些我遇到的排名查询的解释。我有一个类似的设置,我有一个我想订购的积分字段,但不能在我的生活中理解这个查询:http://www.artfulsoftware.com/infotree/queries.php#460
我不明白连接实际上在做什么,以及为什么如果我不包括group by语句,我只会得到一条完全混乱且不正确的记录。我总是将Group By语句看作限制结果的数量,但是这个查询似乎是将它们添加到最终结果集中(因为没有group by,你得到一行返回)
答案 0 :(得分:1)
查询基本上是这样做的:
对于原始投票表中的每一行,计算有多少行(在同一个表中)对该行的投票< =。计数与排名相同。
需要JOIN将投票表链接到投票表中的每一行。
在选择列表中有COUNT()时需要GROUP BY。对于每个人,查询计算它找到的具有每个人的投票数< =的行数。带有COUNT的GROUP BY限制了JOIN结果的结果数,这是原始投票表的乘法。