📜  mysql row_number() 示例 - SQL (1)

📅  最后修改于: 2023-12-03 14:44:27.560000             🧑  作者: Mango

MySQL ROW_NUMBER() 示例

在 MySQL 中,ROW_NUMBER() 函数用于为查询结果集中的每一行生成一个唯一的序号(行号)。该函数可以用于排序、分页和数据排名等场景。

以下是 ROW_NUMBER() 函数的语法:

SELECT ROW_NUMBER() OVER (ORDER BY column) AS rownum, column1, column2, ...
FROM table_name

其中,rownum 列表示行号,可以用于排序、分组等操作。column1、column2 等为查询的列名,table_name 为查询的数据表名。

以下是 ROW_NUMBER() 函数的示例:

假设有一个名为 students 的表,包含以下列:

  • id (int)
  • name (varchar)
  • score (int)

现在需要查询学生成绩 top 3,并返回每个学生的姓名和成绩。可以使用以下代码:

SELECT ROW_NUMBER() OVER (ORDER BY score DESC) AS rownum, name, score
FROM students
LIMIT 3;

其中,ROW_NUMBER() 函数根据成绩(score)从高到低排序,并为每一行生成一个唯一的行号。LIMIT 3 表示只返回前 3 行记录。

执行以上 SQL 语句后,可以得到以下结果:

| rownum | name | score | | --- | --- | --- | | 1 | 李明 | 99 | | 2 | 王二 | 95 | | 3 | 张三 | 90 |

可以看到,根据排名,前三名的学生的姓名和成绩被正确地返回了。

除了排序和分页,ROW_NUMBER() 函数还可以用于数据排名、分组、分段查询等场景。需要根据具体需求进行调整。