柚子快報激活碼778899分享:數(shù)據(jù)庫 mysql之row
柚子快報激活碼778899分享:數(shù)據(jù)庫 mysql之row
1.語法
#將字段按照COLUMN1分組COLUMN2排序后分配一個從1開始升序的編號
SELECT *, ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2 ) AS NUM FROM TABLE;
PARTITION BY子句將結(jié)果集劃分為分區(qū)。 ROW_NUMBER()函數(shù)分別應用于每個分區(qū),并重新初始化每個分區(qū)的行號。PARTITION BY子句是可選的。如果未指定,ROW_NUMBER()函數(shù)會將整個結(jié)果集視為單個分區(qū)。ORDER BY子句定義結(jié)果集的每個分區(qū)中的行的邏輯順序。ORDER BY子句是必須的,因為ROW_NUMBER()函數(shù)對順序敏感
2.舉例
1.將商品表中的價格按升序排序并編號
SELECT goods_price,goods_user_id,ROW_NUMBER() over(ORDER BY goods_price) as num FROM goods
運行結(jié)果:
結(jié)果新增了一列來標記行號
2.將商品按用戶分組后價格降序并編號
SELECT goods_price,goods_user_id,ROW_NUMBER() over(PARTITION BY goods_user_id ORDER BY goods_price desc) as num FROM goods
運行結(jié)果:
結(jié)果會按每一個用戶進行分區(qū),按價格降序排序后,按順序編號。
3.將商品按用戶分組后價格降序并編號且只查詢編號為1的記錄
SELECT * FROM
(SELECT goods_price,goods_user_id,ROW_NUMBER() over(PARTITION By goods_user_id ORDER BY goods_price desc) as num FROM goods) as a
WHERE a.num=1
運行結(jié)果:
可以看到在上述基礎(chǔ)上過濾出了編號為1的記錄。
柚子快報激活碼778899分享:數(shù)據(jù)庫 mysql之row
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。