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

本身以前沒遇到過這種在查詢時給結果編號的狀況,是同事打算跳槽,面試回來問到這種狀況纔想到去研究,如下以單表查詢爲例分析下:mysql

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;

結果:圖片描述sql

分析:
在開始是定義一個變量i,讓它每增一條結果是➕1,@i:=1;spa

這裏順帶複習下mysql定義用戶變量的方式:select @變量名code

對用戶變量賦值有兩種方式,一種是直接用"="號,另外一種是用":="號。其區別在於使用set命令對用戶變量進行賦值時,兩種方式均可以使用;當使用select語句對用戶變量進行賦值時,只能使用":="方式,由於在select語句中,"="號被看做是比較操做符圖片

(@i:=@i+1) 也能夠寫成 @i:=@i+1,加括號是爲了視覺上看這結構更清楚些。在定義好一個變量後每次查詢都會給這個變量自增,而咱們每次執行查詢語句獲取結果後就不須要這個變量自增了,因此要把它重置爲0,在表名後用逗號分格下使用 (SELECT @i:=0) as i 就能夠了,說下這個as i爲何要這樣用,是由於派生表必須須要一個別名,這個就是作它的別名,能夠任意字符。get

更多請到:https://onepersonsite.comit

相關文章
相關標籤/搜索