MySQL中row_number的實(shí)現(xiàn)過(guò)程
一 、背景
一般在數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中,我們可以很方便的使用row_number函數(shù)根據(jù)某個(gè)維度來(lái)對(duì)數(shù)據(jù)進(jìn)行分組,實(shí)現(xiàn)每個(gè)組內(nèi)數(shù)據(jù)編號(hào)排序的效果。如下圖所示,該圖是在mysql環(huán)境中生成的效果圖,這里以lcid進(jìn)行的分組,num等價(jià)于row_number函數(shù)實(shí)現(xiàn)的效果:

二、實(shí)現(xiàn)過(guò)程
1.設(shè)置mysql變量
設(shè)置兩個(gè)變量
set @row_number:=0; --根據(jù)lcid_no的判斷結(jié)果生成row_number序號(hào) set @lcid_no:= 0; --用于獲取每行l(wèi)cid列數(shù)據(jù),然后與前面一行的lcid數(shù)據(jù)進(jìn)行對(duì)比,若相同則自增1,否則為1
2.使用case when
SELECT @row_number:=CASE
WHEN @lcid_no = s.lcid THEN @row_number + 1
ELSE 1
END AS num,
@lcid_no:=s.lcid AS lcid,
s.lcid
FROM r_qcloud_approval_fh_d s,(select @orw_number:=0,@lcid_no:=0) t
ORDER BY s.lcid;
3.過(guò)程分析
若存在多條相同數(shù)據(jù)情形
1)初始條件下,游標(biāo)指向第一條數(shù)據(jù),此時(shí)lcid_no = 0,lcid_no 不等于lcid,故row_number = 1
2)游標(biāo)指向第二條數(shù)據(jù),lcid_no = 上一條數(shù)據(jù)的lcid,因上一條數(shù)據(jù)的lcid = 當(dāng)前行l(wèi)cid,因此row_number =2
無(wú)重復(fù)數(shù)據(jù)情形
1)初始條件下,游標(biāo)指向第一條數(shù)據(jù),此時(shí)lcid_no = 0,lcid_no 不等于lcid,故row_number = 1
三、使用場(chǎng)景
在mysql這種關(guān)系型數(shù)據(jù)庫(kù)中,沒(méi)有row_number函數(shù)的情況下使用
到此這篇關(guān)于MySQL中row_number的實(shí)現(xiàn)過(guò)程的文章就介紹到這了,更多相關(guān)MySQL中row_number內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql字符串拼接并設(shè)置null值的實(shí)例方法
在本文中小編給大家整理的是關(guān)于mysql 字符串拼接+設(shè)置null值的實(shí)例內(nèi)容以及具體方法,需要的朋友們可以學(xué)習(xí)下。2019-09-09
Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法
這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
mysql啟動(dòng)報(bào)錯(cuò)Failed?to?start?LSB:start?and?stop?MySQL的問(wèn)題解決
本文主要介紹了mysql啟動(dòng)報(bào)錯(cuò)Failed?to?start?LSB:start?and?stop?MySQL的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
MySQL中使用JSON存儲(chǔ)數(shù)據(jù)的實(shí)現(xiàn)示例
本文主要介紹了MySQL中使用JSON存儲(chǔ)數(shù)據(jù)的實(shí)現(xiàn)示例,我們可以在MySQL中直接存儲(chǔ)、查詢(xún)和操作JSON數(shù)據(jù),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Mysql數(shù)據(jù)庫(kù)性能優(yōu)化二

