Posted on 2019-06-04 11:32
魔のkyo 阅读(1148)
评论(0) 编辑 收藏 引用 所属分类:
Programming 、
SQL
比如下面语句查询学生的 学号,姓名,年龄,按照年龄从小到大排序,年龄相同时按照学号从小到大排序
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