在mysql中,可以利用select語句定義用戶變量給查詢結果添加序號,語法為“SELECT 字段1,字段2,(@i:=@i+1) AS ‘序號’ FROM 表名,(SELECT @i:=0) AS itable;”。
本教程操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
mysql怎么給查詢加序號
一種普遍的解決方法是:通過?定義用戶變量?生成序號
舉例:假設數據庫有?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視頻教程