mysql的row_number() over
时间: 2023-10-28 08:58:38 浏览: 85
SQL中的ROW NUMBER() OVER()
MySQL的row_number() over是一个窗口函数,用于为查询结果集中的每行分配一个唯一的行号。
举例来说,如果我们有一个名为student的表,包含字段id, name, age, class, score,我们可以使用row_number() over函数来为每个学生分配一个行号。例如,我们可以使用以下查询来实现这个目的:
select id, name, age, class, score ,row_number() over () as `rank` from student;
这个查询将返回一个包含所有学生信息的结果集,并在每一行的最后一列添加一个名为`rank`的字段,其中包含该学生的行号。
如果我们希望按照学生成绩的高低来排序,并为每个学生分配一个行号,我们可以使用以下查询:
select id, name, age, class, score ,row_number() over (order by score) as `rank` from student;
这个查询将按照学生成绩的升序对结果集进行排序,并为每个学生分配一个行号,行号从1开始递增。
如果我们希望按照学生成绩的高低来排序,并按照学生的id进行二次排序,我们可以使用以下查询:
select id, name, age, class, score ,row_number() over (order by score) as `rank` from student order by id;
这个查询将按照学生成绩的升序对结果集进行排序,如果学生成绩相同,则按照学生的id进行排序,并为每个学生分配一个行号,行号从1开始递增。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [MySQL和PostgreSQL中使用ROW_NUMBER()OVER()函数实现统计排名](https://blog.csdn.net/weixin_45371233/article/details/127809837)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文