2012-04-17 58 views
1

我希望得到我遇到的排名查询的一些解释。我有一个类似的设置,我有一个点字段,我想要命令,但不能为我的生活理解此查询:http://www.artfulsoftware.com/infotree/queries.php#460需要MySQL排名查询的一些解释

我不明白什么连接实际上在做什么,以及为什么如果我不通过陈述包含这个组,我只会得到一个完全混乱和不正确的记录。我总是看到集团通过报表限制结果的数量,但此查询似乎是将其添加到最终的结果集(且不包括群组通过,你会得到一个返回行)

回答

1

查询基本上是这样做的:

对于原票表的每一行,算多行(在同一个表)怎么也得票数< =到该行。计数与排名相同。

连接是需要的票数表中的投票表格链接到每个单排。当你在你的选择列表中的COUNT()需要

GROUP BY。对于每个人来说,查询计算它找到的行数为< =对于每个人。带有COUNT的GROUP BY限制了JOIN结果的数量,该结果是原始投票表的乘积。

+0

感谢您的回复! 我无法看到JOIN如何进入这个过程。 JOIN的ON语句在我看来应该是WHERE条件。 JOIN是否将满足这些条件的表中的每一行都带回原始表中的每条记录,COUNT然后统计实际返回的实际数量?如果这一切都正确,那么GROUP BY就是我迷路的地方。它是否将连接表分组? – 2012-04-17 15:53:47

+1

是的,该连接正在满足满足这些条件的表中的每一行。如果要用v2.names替换COUNT,并删除GROUP BY,则结果集将相乘来说明这一点。 – 2012-04-17 16:02:18