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

标签 mysql sql

我希望得到一些关于我遇到的排名查询的解释。我有一个类似的设置,其中我有一个点字段,我想按该字段进行排序,但我终生无法理解此查询:http://www.artfulsoftware.com/infotree/queries.php#460

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

最佳答案

查询本质上是这样做的:

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

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

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

关于mysql - 需要对 MySQL 排名查询的一些解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194239/

相关文章:

php - 用户交互式刷新动态菜单

sql - 如果未明确使用 ISNULL,则左连接失败

php - 如何为另一个表中的行创建列

java - 限制 JPA 中集合的大小

MYSQL:更新一行而不提及字段名称

sql - 验证 SQL Server 中现有记录的更快方法

mysql - 在 Select Mysql 语句中选择

Mysql + 重复键更新

PHP MySQL 不为 CRUD 应用程序更新

MySQL 对连接表的查询条件