sqlserver数据库row_number分页排序如何使用?

2025-11-05 10:50:38

1、打开sqlserver数据库管理工具,点击“新建查询”,打开一个空白的SQL书写窗口。在这里面输入如下SQL语句,创建一个临时表,用于演示row_number的使用

IF OBJECT_ID('tempdb..#tmpRowNumber') IS NOT NULL DROP TABLE #tmpRowNumber;

   CREATE TABLE #tmpRowNumber(

   Col1 VARCHAR(50),

   Col2 VARCHAR(50),

   Col3 INT

)

sqlserver数据库row_number分页排序如何使用?

2、往临时表中插入几条演示数据

   INSERT INTO #tmpRowNumber(Col1, Col2, Col3) VALUES('张三', '数学', 90);

   INSERT INTO #tmpRowNumber(Col1, Col2, Col3) VALUES('张三', '语文', 80);

   INSERT INTO #tmpRowNumber(Col1, Col2, Col3) VALUES('李四', '数学', 75);

   INSERT INTO #tmpRowNumber(Col1, Col2, Col3) VALUES('李四', '语文', 85);

sqlserver数据库row_number分页排序如何使用?

3、查询表中的数据

   SELECT * FROM #tmpRowNumber

sqlserver数据库row_number分页排序如何使用?

4、row_number的首次使用,仅使用order by,将查询结果排序,并给结果每一行添加一个序号

   SELECT ROW_NUMBER() OVER(ORDER BY col3) AS RowId, *

   FROM #tmpRowNumber

sqlserver数据库row_number分页排序如何使用?

5、有了这个行序号之后,就可以做分页查询了。比如,查询大于第2行小于第4行的数据

   SELECT *

   FROM (

       SELECT ROW_NUMBER() OVER(ORDER BY col3) AS RowId, *

       FROM #tmpRowNumber

   ) tmp

   WHERE tmp.RowId > 2 and tmp.RowId <4

sqlserver数据库row_number分页排序如何使用?

6、row_number的另外一个用法就是结合分组的语法。比如:按照Col1姓名分组,再按照Col3分数从高到低排序

   SELECT ROW_NUMBER() OVER(PARTITION BY Col1 ORDER BY col3 DESC) AS RowId, *

   FROM #tmpRowNumber

sqlserver数据库row_number分页排序如何使用?

7、row_number按照Col2课程分组,Col3分数从高到低排序

   SELECT ROW_NUMBER() OVER(PARTITION BY Col2 ORDER BY col3 DESC) AS RowId, *

   FROM #tmpRowNumber

sqlserver数据库row_number分页排序如何使用?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢