添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

ROW_NUMBER()

ROW_NUMBER()是SQL用來做排序的函數,在做分頁功能時,通常都會使用上它,ROW_NUMBER()會將查詢出來的每一列資料加上一個序號(從1開始累加),依次排序且不會重複。

使用ROW_NUMBER()時必須要用OVER子句選擇對某一列進行排序才能生成序號。

使用方法:

Select ROW_NUMBER() OVER (ORDER BY [欄位名稱] (ASC or DESC) as [ROW_NUMBERㄉ欄位名稱] ,* from [資料表名稱]

使用範例:

Customers資料表

使用ROW_NUMBER()

select ROW_NUMBER() OVER (ORDER BY id ASC) as ROW_ID ,* from Customers

結果中的ROW_ID欄位,就是由ROW_NUMBER()函式所產生出的欄位序號列。原理是先使用OVER子句中的ORDER BY排序對資料進行排序,然後按照這個順序生成序號,由1開始一直流水編號到最後一筆資料。

select ROW_NUMBER() OVER (PARTITION BY address ORDER BY id ASC) as ROW_ID ,* from Customers

多對address下PARTITION BY條件,會發現ROW_NUMBER()產生的ROW_ID欄位,會依照組別來產生流水號。

要取出每個群組的第一筆資料,就可以使用這個方法,如下:

select * from (select ROW_NUMBER() OVER (PARTITION BY address ORDER BY id ASC) as ROW_ID ,* from Customers)as KKK where KKK.ROW_ID =1