Mysql查询或导出结果添加序号字段实现方法
作者:不会理财的程序员不是好摄影师
这篇文章主要介绍了Mysql查询或导出结果添加序号字段实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Mysql查询或导出结果添加序号字段
在MySQL中查询数据或者导出Excel时,通常都需要给结果集中的每一行来添加一个序号,方便给查询出或者导出的数据进行排序并且方便查看和处理数据
常见的方法是通过定义用户变量,在MySQL中直接给查询结果集添加序号
通过定义用户变量生成序号
在SQL语句中通过定义一个用户变量,然后每查询一行数据就将用户变量自增1并赋值给序号列,这种方法可以实现对查询结果集添加序号。
示例SQL语句:
SELECT (@orderNum := @orderNum +1) AS orderNum id, name, number, tel FROM tb_user, (SELECT @orderNum := 0) AS orderNum;
序号语句相关说明
- (@orderNum := @orderNum +1) 代表的意思是:变量 orderNum加 1 赋值给变量 orderNum,在定义好一个变量后每次查询都会给这个变量进行自增,每次执行查询语句获取结果后就不需要自增了。
- (SELECT @orderNum := 0) AS orderNum ,定义用户变量 orderNum,设置初始值为 0,然后将它作为派生表来使用,AS 给表定义了别名。
Mysql对查询的结果集添加自增序号,两种写法
在MySQL中,当我们所要查询的结果集没有ID字段时,为方便前台展示等业务需求,需要添加一个自增的序号字段(ID)。
语法如下:
SELECT (@i:=@i+1) 别名1,表字段信息 FROM 表名, (SELECT @i:=0) AS 别名2
代码示例,同时结合分页使用
写法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;
区别:
- 写法1多次执行,id会自动增加,
- 写法2多次执行,id不会增加
补充:
如果是在MyBatis中使用上述查询时,变量i的的初始值0,可以使用传参的方式(¥{})进行设置。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。