ROW NUMBER用法詳解

2022-02-06 03:00:00 字數 1721 閱讀 2482

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 與rank 的用法

create table student 學生成績表 id int,主鍵 grade int,班級 score int 分數 go insert into student values 1,1,88 insert into student values 2,1,66 insert into stud...

資料庫row number 的簡單用法

row number 簡單來說就是每一條記錄返回數字。現在,oracle資料庫以及sql server資料庫都支援了row number over 的用法,具體用法也很相似。下面通過乙個簡單的例子來說一下row number 的簡單用法。我們建立乙個表結構以及表資料 student info 如下所...

Row Number實現分頁

1 首先是 select row number over order by id asc as rownumber from table1 生成帶序號的集合 2 再查詢該集合的 第 1 到第 5條資料 select from select row number over order by id as...