Mysql查詢或?qū)С鼋Y(jié)果添加序號字段實現(xiàn)方法
Mysql查詢或?qū)С鼋Y(jié)果添加序號字段
在MySQL中查詢數(shù)據(jù)或者導(dǎo)出Excel時,通常都需要給結(jié)果集中的每一行來添加一個序號,方便給查詢出或者導(dǎo)出的數(shù)據(jù)進(jìn)行排序并且方便查看和處理數(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,在定義好一個變量后每次查詢都會給這個變量進(jìn)行自增,每次執(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,可以使用傳參的方式(¥{})進(jìn)行設(shè)置。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解讓MySQL和Redis數(shù)據(jù)保持一致的四種策略
在分布式系統(tǒng)中,保證Redis和MySQL之間的數(shù)據(jù)一致性是一個復(fù)雜且重要的問題,下面這篇文章主要給大家介紹了關(guān)于讓MySQL和Redis數(shù)據(jù)保持一致的四種策略,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07MySQL數(shù)據(jù)庫show processlist指令使用解析
這篇文章主要介紹了MySQL數(shù)據(jù)庫show processlist指令使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11