row_number使用_row_number() over order by

row_number使用_row_number() over order byROW_NUMBER用法详解 语法格式:row_number() over(partition by 分组列 order by 排序列 desc) 分组列和排序列都可以多个字段组合 row_number() over()分组排序功能: 使用 row_number() over()函数时,over()

row_number使用_row_number() over order by

ROW_NUMBER用法详解

语法格式:row_number() over(partition by 分组列 order by 排序列 desc)

分组列和排序列都可以多个字段组合

row_number() over()分组排序功能:

使用 row_number() over()函数时,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。

1. row_number() over()
使用时排序字段放在over(ORDER BY 字段)里面,查询记录按排序字段升成序号升序输出。
注意事项:用了over排序后,sql语句后面不用再写Order BY子句排序。如果再写Order by子句,记录会按后面的Order by子句排序输出,记录排序不会按row_number产生的序号排序。

2. ROW_NUMBER() OVER PARTITION BY

使用 ROW_NUMBER() OVER(PARTITION BY 字段1 ORDER BY 字段2 Asc) 语句,按OVER里的字段1进行分组,然后按OVER里的order BY 字段2 进行组内排序,每组都是从1开始。
这时可根据需要在后面写另一个order BY 子句,记录排序按这个子句排序输出,跟ROW_NUMBER方法产生的序号无关。

 

示例

CREATE TABLE #temp_data(
id BIGINT PRIMARY KEY IDENTITY,
name NVARCHAR(50),
category INT,–分类id
sort_id INT,–排序id
addtime DATETIME
)

INSERT INTO #temp_data ( name,category,sort_id, addtime )VALUES ( ‘水果11’, 1, 1,GETDATE());
INSERT INTO #temp_data ( name,category,sort_id, addtime )VALUES ( ‘水果12’, 1, 2,GETDATE());
INSERT INTO #temp_data ( name,category,sort_id, addtime )VALUES ( ‘水果23’, 2, 3,GETDATE());
INSERT INTO #temp_data ( name,category,sort_id, addtime )VALUES ( ‘水果24’, 2, 4,GETDATE());
–SELECT * FROM #temp_data
–ROW_NUMBER() OVER
SELECT *,(ROW_NUMBER() OVER(ORDER BY category DESC,d.sort_id Asc)) as r_index

FROM #temp_data d
–ORDER BY id –如果再写Order by子句,记录会按后面的Order by子句排序

–ROW_NUMBER() OVER PARTITION BY 记录按后面的order BY 子句排序输出,跟ROW_NUMBER方法产生的序号无关。
SELECT (ROW_NUMBER() OVER(PARTITION BY d.category ORDER BY d.sort_id Asc)) as r_index,*

FROM #temp_data d ORDER BY category,r_index

DROP TABLE #temp_data

 

今天的文章row_number使用_row_number() over order by分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/51402.html

(0)
编程小号编程小号
上一篇 2023-09-01 12:17
下一篇 2023-09-01

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注