SQL使用ROW_NUMBER() OVER函數(shù)生成序列號
語法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
簡單的說
ROW_NUMBER()
從1開始,為每一條分組記錄返回一個數(shù)字,這里的ROW_NUMBER() OVER (ORDER BY CYLH DESC)
是先把xlh列降序,再為降序以后的每條CYLH記錄返回一個序號。
示例:?
分析:ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)
表示根據(jù)COL1分組,在分組內(nèi)部根據(jù) COL2
排序,而此函數(shù)計算的值就表示每組內(nèi)部排序后的順序編號(組內(nèi)連續(xù)的唯一的)
也可這樣使用:ROW_NUMBER() OVER (ORDER BY COL2)
例子:
建立測試表,并插入測試數(shù)據(jù)
CREATE TABLE TEST_ROW_NUMBER_01( CMZH varchar(10) not null, CYLH varchar(10) null, MJE money null, );
INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES (2106000011,20281997,10.50) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000010,20281996,10.50) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000008,20281995,0.00) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000006,20281994,9.50) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000004,20281993,5.50) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000001,20281992,10.50) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000002,20281992,10.50) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000007,20217280,0.00) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000009,20172458,5.50) INSERT INTO TEST_ROW_NUMBER_01(CMZH,CYLH,MJE) VALUES(2106000005,20121813,0.00)
執(zhí)行腳本自動生成行號并按CYLH進行排序(滑動查看代碼)
SELECT ROW_NUMBER()OVER(ORDER BY CYLH DESC) AS ROWNUM,* FROM TEST_ROW_NUMBER_01
結(jié)果如下:
?注意:在使用over
等開窗函數(shù)時,over
里頭的分組及排序的執(zhí)行晚于“where
,group by
,order by
”的執(zhí)行。
到此這篇關(guān)于SQL使用ROW_NUMBER() OVER函數(shù)生成序列號的文章就介紹到這了,更多相關(guān)SQL用ROW_NUMBER() OVER生成序列號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用row_number()實現(xiàn)分頁實例
- oracle中rownum和row_number()
- 利用ROW_NUMBER() OVER函數(shù)給SQL數(shù)據(jù)庫中每一條記錄分配行號的方法
- Mysql row number()排序函數(shù)的用法和注意
- SQL中distinct 和 row_number() over() 的區(qū)別及用法
- MYSQL row_number()與over()函數(shù)用法詳解
- MySQL中rank() over、dense_rank() over、row_number() over用法介紹
- SQL中row_number()?over(partition?by)的用法說明
- Row_number()函數(shù)用法小結(jié)
- 數(shù)據(jù)庫中row_number() 分組排序函數(shù)的具體使用
相關(guān)文章
Mysql數(shù)據(jù)庫高級用法之視圖、事務(wù)、索引、自連接、用戶管理實例分析
這篇文章主要介紹了Mysql數(shù)據(jù)庫高級用法之視圖、事務(wù)、索引、自連接、用戶管理,結(jié)合實例形式分析了MySQL數(shù)據(jù)庫視圖、事務(wù)、索引、自連接、用戶管理常見用法及操作注意事項,需要的朋友可以參考下2019-11-11詳解MySQL數(shù)據(jù)備份之mysqldump使用方法
本篇文章主要介紹了MySQL數(shù)據(jù)備份,詳細(xì)的介紹了mysqldump的各種用法,具有一定的參考價值,有需要的可以了解一下。2016-11-11Mysql內(nèi)置函數(shù)的實現(xiàn)示例
mysql內(nèi)置了很多的函數(shù),本文主要介紹了Mysql內(nèi)置函數(shù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Mysql的max_allowed_packet設(shè)定
今天小編就為大家分享一篇關(guān)于Mysql的max_allowed_packet設(shè)定,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12MySQL查詢優(yōu)化:LIMIT 1避免全表掃描提高查詢效率
在某些情況下,如果明知道查詢結(jié)果只有一個,SQL語句中使用LIMIT 1會提高查詢效率,感興趣的朋友可以了解下哈,希望對你優(yōu)化mysql查詢有所幫助2013-04-04node 多種方法連接mysql數(shù)據(jù)庫(最新推薦)
mysql是一個流行的第三方模塊,可以通過npm安裝,在Node.js 中,有多種方法可以連接 MySQL 數(shù)據(jù)庫,本文通過實例代碼講解node 多種方法連接mysql數(shù)據(jù)庫的示例代碼,感興趣的朋友跟隨小編一起看看吧2023-07-07淺析MySQL數(shù)據(jù)的導(dǎo)出與導(dǎo)入知識點
在本文里我們給大家分享了關(guān)于MySQL數(shù)據(jù)的導(dǎo)出與導(dǎo)入的相關(guān)實例和知識點內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。2019-03-03