posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

给SELECT结果自动生成行号 (SQL Server)

Posted on 2019-06-04 11:32 魔のkyo 阅读(1167) 评论(0)  编辑 收藏 引用 所属分类: ProgrammingSQL
比如下面语句查询学生的 学号,姓名,年龄,按照年龄从小到大排序,年龄相同时按照学号从小到大排序
select no, name, age from Student
order by age asc, no asc

如果想给查询结果的每行前面加上一个从1开始的自然数编号,可以使用
select ROW_NUMBER() OVER (order by age asc, no asc), no, name, age from Student
order by age asc, no asc
增加的部分
ROW_NUMBER() OVER (order by age asc, no asc)
注意OVER后面的order by的内容和查询语句的order by是一致的,这样查询结果就是从1递增进行编号,事实上也可以不一致,这里的order by就是指定按照何种顺序生成这列值

更详细的用法参考
https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql?view=sql-server-2017
只有注册用户登录后才能发表评论。