1

我希望对我遇到的排名查询有一些解释。我有一个类似的设置,我有一个我想要订购的点字段,但我无法理解这个查询:http ://www.artfulsoftware.com/infotree/queries.php#460

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

4

1 回答 1

1

查询本质上是这样做的:

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

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

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

于 2012-04-17T15:45:35.790 回答