MySQL中自增長序列(@i:=@i+1)的用法示例詳解
問題分析
Oracle中的偽列 ROWNUM 是一組遞增的序列,在查詢數(shù)據(jù)時(shí)生成,為結(jié)果集中每一行標(biāo)識一個(gè)行號, 每條記錄會因?yàn)檩敵龅捻樞虿煌@得不同的邏輯編號;此自增長序列可以視作起始值為 1,以1為步長的遞增的等差數(shù)列。MySQL中沒有這個(gè)偽列的概念,但是有些業(yè)務(wù)場景需要這個(gè)自增長編號,所以,本文分享如何在MySQL中模擬生成一個(gè)自增長序列。
模擬自增長序列
單表查詢
sql示例:
select (@i:=@i+5) as rownum, surname, personal_name from student, (select @i:=100) as init;
解釋: 上述sql中,@i:=100為自定義的初始值為100,表名init可以自定義;(@i:=@i+5)為遞增規(guī)則,表示遞增序列的步長為5,上述sql運(yùn)行結(jié)果如下:
當(dāng)然一般不會這么用,簡單的從1開始遞增就行:
select (@i:=@i+1) as rownum, surname, personal_name from student, (select @i:=0) as init;
多表關(guān)聯(lián)查詢
多表關(guān)聯(lián)查詢跟單表查詢類似,在關(guān)聯(lián)查詢后定義一個(gè)自增長序列即可:
select (@i:=@i+1) as rownum, A.surname, B.uname from student A left join user B on CONCAT(A.surname, A.personal_name) = B.uname, (select @i:=0) as init;
結(jié)束語
本文分享在MySQL中,使用 (@i:=@i+1) 模擬Oracle中的偽列 ROWNUM,生成一個(gè)自增長序列。
以上就是這篇文章的全部內(nèi)容了,希望本文對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如有疑問請留言交流。Wiener在此祝各位生活愉快!工作順利!
Reference
到此這篇關(guān)于MySQL中自增長序列(c)的用處及用法的文章就介紹到這了,更多相關(guān)mysql @i:=@i+1用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
update.where無索引導(dǎo)致MySQL死鎖問題解決
這篇文章主要為大家介紹了update.where無索引導(dǎo)致MySQL死鎖問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11mysql基于正則實(shí)現(xiàn)模糊替換字符串的方法分析
這篇文章主要介紹了mysql基于正則實(shí)現(xiàn)模糊替換字符串的方法,結(jié)合具體實(shí)例對比分析了使用正則實(shí)現(xiàn)mysql字符串替換的注意事項(xiàng)與相關(guān)操作技巧,需要的朋友可以參考下2017-03-03MySql .frm數(shù)據(jù)庫文件導(dǎo)入的問題
手頭有.frm 文件,怎樣導(dǎo)入數(shù)據(jù)庫???2009-07-07navicat 8 創(chuàng)建數(shù)據(jù)庫與創(chuàng)建用戶分配權(quán)限圖文方法
navicat是一款不錯(cuò)的圖形化管理mysql的工具,大家一般都是用phpmyadmin或直接命令行操作,對于不是很熟悉命令的朋友,就可以使用navicat這個(gè)工具了,方便操作。2011-04-04mysql報(bào)錯(cuò):Deadlock found when trying to get lock; try restarti
這篇文章主要給大家介紹了關(guān)于mysql出現(xiàn)報(bào)錯(cuò):Deadlock found when trying to get lock; try restarting transaction的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-07-07