在mysql中,可以利用SELECT語句定義使用者變數為查詢結果加上序號,語法為「SELECT 欄位1,欄位2,(@i:=@i 1) AS '序號' FROM 表名, (SELECT @i:=0) AS itable;」。
本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
一個普遍的解決方法是:透過 定義使用者變數 產生序號
範例:假設資料庫有 student 表
表中有欄位:sid,sname,gender,age
查詢表中的資料並加上序號,對應的SQL為:
SELECT sid,sname,gender,age,(@i:=@i+1) AS '序号' FROM student,(SELECT @i:=0) AS itable;
或
SET @i=0; SELECT sid,sname,gender,age,@i:=@i+1 AS '序号' FROM student;
查詢結果如圖所示:
解釋說明:
#1、(@i:=@i 1) 也可以寫成 @i: =@i 1 ,加括號是為了視覺上更清晰。
它代表的意思是:變數i 加1 賦值給變數i,在定義好一個變數後每次查詢都會給這個變數自增,每次執行查詢語句取得結果後就不需要這個變數自增了
2、(SELECT @i:=0) AS itable,定義使用者變數i,設定初始值為0,然後將它作為衍生表使用,AS定義了表格的別名。
3、SET @i=0 。定義使用者變數i,賦初值為0,
相關知識點:
1、MySQL定義使用者變數的方式:select @變數名稱 ,上面的SQL語句中,變數的名字是 i
2、使用者變數賦值:一種是直接用"="號,另一種是用":="號。
= 與 := 的差異:
使用set指令對使用者變數進行賦值時,兩種方式都可以使用,
即:SET @變數名稱=xxx或 SET @變數名稱:=xxx
使用select語句對使用者變數進行賦值時,只能使用":=「方式,因為在select語句中,」="號被視為比較運算符。即:SELECT @變數名稱:=xxx
①:使用者變數
#②:衍生表格
③:AS設定別名
#用Oracle的寫法是:
SELECT "sid","sname","gender","age", ROW_NUMBER() over(order by "sid") AS "序号" FROM "user";
推薦學習:mysql影片教學
以上是mysql怎麼給查詢加序號的詳細內容。更多資訊請關注PHP中文網其他相關文章!