Mysql 查询结果新增一列递增序列

前言
有时候会遇到mysql查询的需求,需要在查询结果集新增一列序号,依次递增,当然这种实现有很简单的方案,直接用结果集for循环添加一个字段即可实现,本文讲的是通过sql查询直接实现。
1、新建一张auto 表

1.png

如果我们想筛选出level为3的字段,可写如下sql
select * from auto where level = 3;
结果如下
2.png

2、此时我们想再多加一列为序号列,让序号递增

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

3.png

此时发现,结果集中新增了xh列,一次递增,实现了需求

3、语句解析
:= 在mysql中是赋值操作,@xh 在mysql是变量,(@xh := @xh + 1) as xh 意思相当于java中的 a = a + 1, 后面的(select @xh := 0) x 相当java中的a = 0,最后执行整条sql,mysql先执行from后的语句,此时(select * from auto where level = 3) a会产生一张虚表,(select @xh := 0) x;会将@xh变量赋值为0,最后执行from前面的语句,就出现上述结果
附上mysql查询语句时,关键字顺序和执行查询时顺序
关键字顺序
select
from 
join 
on 
where  
group by  
having  
union  
order by  
limit
查询时执行顺序
from
on
join
where
group by
having
select
distinct
union
order by
limit
希望对你有所帮助,如有不对,欢迎指正
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这两天刷屏的小视频。 怀着好奇心看了一遍,是一位老爷爷,问他的儿子什么时候回来过年,问到他的孙女喜欢什么,要给他准...
    bkggg阅读 1,063评论 0 1
  • 文/逗逗,图/花瓣网 1. 关于女儿的性教育。 一天,女儿放学后对爸爸说:“爸爸,你在骗我!” 爸爸奇怪女儿这么突...
    遇见逗逗阅读 11,317评论 0 0
  • 今天早上早早起了床,第一次要离开家一个人生活真的很不可思议。老妈一大早就去买菜回来,还买了我最爱吃的那一家的鸡肉...
    简兮姑娘阅读 1,297评论 1 1

友情链接更多精彩内容