Mysql查詢或?qū)С鼋Y(jié)果添加序號字段實現(xiàn)方法
Mysql查詢或?qū)С鼋Y(jié)果添加序號字段
在MySQL中查詢數(shù)據(jù)或者導(dǎo)出Excel時,通常都需要給結(jié)果集中的每一行來添加一個序號,方便給查詢出或者導(dǎo)出的數(shù)據(jù)進行排序并且方便查看和處理數(shù)據(jù)
常見的方法是通過定義用戶變量,在MySQL中直接給查詢結(jié)果集添加序號
通過定義用戶變量生成序號
在SQL語句中通過定義一個用戶變量,然后每查詢一行數(shù)據(jù)就將用戶變量自增1并賦值給序號列,這種方法可以實現(xiàn)對查詢結(jié)果集添加序號。
示例SQL語句:
SELECT (@orderNum := @orderNum +1) AS orderNum id, name, number, tel FROM tb_user, (SELECT @orderNum := 0) AS orderNum;
序號語句相關(guān)說明
- (@orderNum := @orderNum +1) 代表的意思是:變量 orderNum加 1 賦值給變量 orderNum,在定義好一個變量后每次查詢都會給這個變量進行自增,每次執(zhí)行查詢語句獲取結(jié)果后就不需要自增了。
- (SELECT @orderNum := 0) AS orderNum ,定義用戶變量 orderNum,設(shè)置初始值為 0,然后將它作為派生表來使用,AS 給表定義了別名。
Mysql對查詢的結(jié)果集添加自增序號,兩種寫法
在MySQL中,當(dāng)我們所要查詢的結(jié)果集沒有ID字段時,為方便前臺展示等業(yè)務(wù)需求,需要添加一個自增的序號字段(ID)。
語法如下:
SELECT (@i:=@i+1) 別名1,表字段信息 FROM 表名, (SELECT @i:=0) AS 別名2
代碼示例,同時結(jié)合分頁使用
寫法1
SET @i:=0; SELECT (@i:=@i+1) AS RowNum, A.* FROM t_prize_log A ORDER BY A.ese_id DESC LIMIT 0, 10;
寫法2
SELECT (@i:=@i+1) AS RowNum, A.* FROM t_prize_log A,(SELECT @i:=0) B ORDER BY A.ese_id DESC LIMIT 0, 10;
區(qū)別:
- 寫法1多次執(zhí)行,id會自動增加,
- 寫法2多次執(zhí)行,id不會增加
補充:
如果是在MyBatis中使用上述查詢時,變量i的的初始值0,可以使用傳參的方式(¥{})進行設(shè)置。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Kubernetes中實現(xiàn) MySQL 讀寫分離的詳細步驟
Kubernetes中實現(xiàn)MySQL的讀寫分離通過主從復(fù)制架構(gòu),利用Kubernetes部署MySQL主節(jié)點和從節(jié)點,并通過Service實現(xiàn)讀寫分離,提高數(shù)據(jù)庫性能和可維護性2024-11-11

