MySQL中自增長序列(@i:=@i+1)的用處及用法


問題分析

   Oracle中的偽列 ROWNUM 是一組遞增的序列,在查詢數據時生成,為結果集中每一行標識一個行號, 每條記錄會因為輸出的順序不同而獲得不同的邏輯編號;此自增長序列可以視作起始值為 1,以1為步長的遞增的等差數列。MySQL中沒有這個偽列的概念,但是有些業務場景需要這個自增長編號,所以,本文分享如何在MySQL中模擬生成一個自增長序列。

模擬自增長序列

  單表查詢

  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)為遞增規則,表示遞增序列的步長為5,上述sql運行結果如下:

  當然一般不會這么用,簡單的從1開始遞增就行:

select (@i:=@i+1) as rownum, surname, personal_name from student, (select @i:=0) as init;

  多表關聯查詢

  多表關聯查詢跟單表查詢類似,在關聯查詢后定義一個自增長序列即可:

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;

結束語

  本文分享在MySQL中,使用 (@i:=@i+1) 模擬Oracle中的偽列 ROWNUM,生成一個自增長序列。

  以上就是這篇文章的全部內容了,希望本文對大家的學習或者工作能帶來一定的幫助,如有疑問請留言交流。Wiener在此祝各位生活愉快!工作順利!

Reference


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM