Mysql查詢或?qū)С鼋Y(jié)果添加序號(hào)字段實(shí)現(xiàn)方法
Mysql查詢或?qū)С鼋Y(jié)果添加序號(hào)字段
在MySQL中查詢數(shù)據(jù)或者導(dǎo)出Excel時(shí),通常都需要給結(jié)果集中的每一行來添加一個(gè)序號(hào),方便給查詢出或者導(dǎo)出的數(shù)據(jù)進(jìn)行排序并且方便查看和處理數(shù)據(jù)
常見的方法是通過定義用戶變量,在MySQL中直接給查詢結(jié)果集添加序號(hào)
通過定義用戶變量生成序號(hào)
在SQL語句中通過定義一個(gè)用戶變量,然后每查詢一行數(shù)據(jù)就將用戶變量自增1并賦值給序號(hào)列,這種方法可以實(shí)現(xiàn)對(duì)查詢結(jié)果集添加序號(hào)。
示例SQL語句:
SELECT (@orderNum := @orderNum +1) AS orderNum id, name, number, tel FROM tb_user, (SELECT @orderNum := 0) AS orderNum;
序號(hào)語句相關(guān)說明
- (@orderNum := @orderNum +1) 代表的意思是:變量 orderNum加 1 賦值給變量 orderNum,在定義好一個(gè)變量后每次查詢都會(huì)給這個(gè)變量進(jìn)行自增,每次執(zhí)行查詢語句獲取結(jié)果后就不需要自增了。
- (SELECT @orderNum := 0) AS orderNum ,定義用戶變量 orderNum,設(shè)置初始值為 0,然后將它作為派生表來使用,AS 給表定義了別名。
Mysql對(duì)查詢的結(jié)果集添加自增序號(hào),兩種寫法
在MySQL中,當(dāng)我們所要查詢的結(jié)果集沒有ID字段時(shí),為方便前臺(tái)展示等業(yè)務(wù)需求,需要添加一個(gè)自增的序號(hào)字段(ID)。
語法如下:
SELECT (@i:=@i+1) 別名1,表字段信息 FROM 表名, (SELECT @i:=0) AS 別名2
代碼示例,同時(shí)結(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會(huì)自動(dòng)增加,
- 寫法2多次執(zhí)行,id不會(huì)增加
補(bǔ)充:
如果是在MyBatis中使用上述查詢時(shí),變量i的的初始值0,可以使用傳參的方式(¥{})進(jìn)行設(shè)置。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql學(xué)習(xí)筆記之基礎(chǔ)知識(shí)
本文是MySQL學(xué)習(xí)筆記系列文章的第一篇,給大家簡單講解下MySQL的一些檢查操作命令,希望大家能夠喜歡2017-02-02
Kubernetes中實(shí)現(xiàn) MySQL 讀寫分離的詳細(xì)步驟
Kubernetes中實(shí)現(xiàn)MySQL的讀寫分離通過主從復(fù)制架構(gòu),利用Kubernetes部署MySQL主節(jié)點(diǎn)和從節(jié)點(diǎn),并通過Service實(shí)現(xiàn)讀寫分離,提高數(shù)據(jù)庫性能和可維護(hù)性2024-11-11
Mysql用戶權(quán)限分配實(shí)戰(zhàn)項(xiàng)目詳解
用戶是數(shù)據(jù)庫的使用者和管理者,MySQL通過用戶的設(shè)置來控制數(shù)據(jù)庫操作人員的訪問與操作范圍,這篇文章主要給大家介紹了關(guān)于Mysql用戶權(quán)限分配實(shí)戰(zhàn)項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-12-12

