Mysql 查詢結(jié)果新增一列遞增序列

前言
有時(shí)候會(huì)遇到mysql查詢的需求,需要在查詢結(jié)果集新增一列序號(hào),依次遞增,當(dāng)然這種實(shí)現(xiàn)有很簡(jiǎn)單的方案,直接用結(jié)果集for循環(huán)添加一個(gè)字段即可實(shí)現(xiàn),本文講的是通過sql查詢直接實(shí)現(xiàn)。
1、新建一張auto 表

1.png

如果我們想篩選出level為3的字段,可寫如下sql
select * from auto where level = 3;
結(jié)果如下
2.png

2、此時(shí)我們想再多加一列為序號(hào)列,讓序號(hào)遞增

修改sql如下
select (@xh := @xh + 1) as xh, a.* from (select * from auto where level = 3) a, (select @xh := 0) x;
結(jié)果如下

3.png

此時(shí)發(fā)現(xiàn),結(jié)果集中新增了xh列,一次遞增,實(shí)現(xiàn)了需求

3、語句解析
:= 在mysql中是賦值操作,@xh 在mysql是變量,(@xh := @xh + 1) as xh 意思相當(dāng)于java中的 a = a + 1, 后面的(select @xh := 0) x 相當(dāng)java中的a = 0,最后執(zhí)行整條sql,mysql先執(zhí)行from后的語句,此時(shí)(select * from auto where level = 3) a會(huì)產(chǎn)生一張?zhí)摫恚?code>(select @xh := 0) x;會(huì)將@xh變量賦值為0,最后執(zhí)行from前面的語句,就出現(xiàn)上述結(jié)果
附上mysql查詢語句時(shí),關(guān)鍵字順序和執(zhí)行查詢時(shí)順序
關(guān)鍵字順序
select
from 
join 
on 
where  
group by  
having  
union  
order by  
limit
查詢時(shí)執(zhí)行順序
from
on
join
where
group by
having
select
distinct
union
order by
limit
希望對(duì)你有所幫助,如有不對(duì),歡迎指正
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容