Mysql查詢數據時,自動為結果編上序號


ROW_NUMBER () over (PARTITION BY id) AS row_num,

 

自己之前沒遇到過這種在查詢時給結果編號的情況,是同事打算跳槽,面試回來問到這種情況才想到去研究,以下以單表查詢為例分析下:
SQL:
SELECT (@i:=@i+1) i,user_id,user_name FROM dt_user_all_orders, (SELECT @i:=0) as i WHERE user_name=’qqqqqqqqqq’ LIMIT 0,10;
結果:

 

 

 

 

分析:
在開始是定義一個變量i,讓它每增一條結果是➕1,@i:=1;
這里順帶復習下mysql定義用戶變量的方式:select @變量名
對用戶變量賦值有兩種方式,一種是直接用”=”號,另一種是用”:=”號。其區別在於使用set命令對用戶變量進行賦值時,兩種方式都可以使用;當使用select語句對用戶變量進行賦值時,只能使用”:=”方式,因為在select語句中,”=”號被看作是比較操作符
(@i:=@i+1) 也可以寫成 @i:=@i+1,加括號是為了視覺上看這結構更清楚些。在定義好一個變量后每次查詢都會給這個變量自增,而我們每次執行查詢語句獲取結果后就不需要這個變量自增了,所以要把它重置為0,在表名后用逗號分格下使用 (SELECT @i:=0) as i 就可以了,說下這個as i為什么要這樣用,是因為派生表必須需要一個別名,這個就是做它的別名,可以任意字符。
更多請到:https://onepersonsite.com
————————————————
版權聲明:本文為CSDN博主「汪得福」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/arbben/article/details/78665389

 


免責聲明!

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



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