摘要:其區別在于使用命令對用戶變量進行賦值時,兩種方式都可以使用當使用語句對用戶變量進行賦值時,只能使用方式,因為在語句中,號被看作是比較操作符也可以寫成,加括號是為了視覺上看這結構更清楚些。
自己之前沒遇到過這種在查詢時給結果編號的情況,是同事打算跳槽,面試回來問到這種情況才想到去研究,以下以單表查詢為例分析下:
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26155.html
摘要:前言只有光頭才能變強刷面試題的時候,不知道你們有沒有見過這兩個命令和反正我就見過了之前雖然知道這兩個命令大概什么意思,但一直沒有去做筆記。讀懂命令結果命令輸出的結果有列包含一組數字,表示查詢中執行子句或操作表的順序。 前言 只有光頭才能變強 刷面試題的時候,不知道你們有沒有見過MySQL這兩個命令:explain和profile(反正我就見過了).. 之前雖然知道這兩個命令大概什么意思...
閱讀 1784·2023-04-25 15:51
閱讀 2497·2021-10-13 09:40
閱讀 2134·2021-09-23 11:22
閱讀 3244·2019-08-30 14:16
閱讀 2652·2019-08-26 13:35
閱讀 1847·2019-08-26 13:31
閱讀 874·2019-08-26 11:39
閱讀 2732·2019-08-26 10:33