您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql查询怎么添加序号

2024/2/28 5:04:57发布21次查看
mysql查询添加序号的方法:1、通过定义用户变量生成序号,语句如“select id,userid,subject,score, (@i :=@i + 1) as 'xuhao'from tb_score,(select @i := 0) as itable;”;2、通过“set @i=0;select id,userid,subject,score...”语句实现加序号。
本教程操作环境:windows10系统、mysql5.7版本、dell g3电脑。
mysql查询怎么添加序号?
mysql给查询加序号
数据表drop table if exists tb_score;create table tb_score(    id int(11) not null auto_increment,    userid varchar(20) not null comment '用户id',    subject varchar(20) comment '科目',    score double comment '成绩',    primary key(id))engine = innodb default charset = utf8;insert into tb_score(userid,subject,score) values ('001','语文',90);insert into tb_score(userid,subject,score) values ('001','数学',92);insert into tb_score(userid,subject,score) values ('001','英语',80);insert into tb_score(userid,subject,score) values ('002','语文',88);insert into tb_score(userid,subject,score) values ('002','数学',90);insert into tb_score(userid,subject,score) values ('002','英语',75.5);insert into tb_score(userid,subject,score) values ('003','语文',70);insert into tb_score(userid,subject,score) values ('003','数学',85);insert into tb_score(userid,subject,score) values ('003','英语',90);insert into tb_score(userid,subject,score) values ('003','政治',82);
mysql给查询加序号一种普遍的解决方法是:通过定义用户变量生成序号
举例:查询表中的数据并加上序号,对应的sql为:
select id,userid,subject,score, (@i :=@i + 1) as '序号'from tb_score, (select @i := 0) as itable;
+----+--------+---------+-------+--------+| id | userid | subject | score | 序号   |+----+--------+---------+-------+--------+|  1 | 001    | 语文    |    90 |      1 ||  2 | 001    | 数学    |    92 |      2 ||  3 | 001    | 英语    |    80 |      3 ||  4 | 002    | 语文    |    88 |      4 ||  5 | 002    | 数学    |    90 |      5 ||  6 | 002    | 英语    |  75.5 |      6 ||  7 | 003    | 语文    |    70 |      7 ||  8 | 003    | 数学    |    85 |      8 ||  9 | 003    | 英语    |    90 |      9 || 10 | 003    | 政治    |    82 |     10 |+----+--------+---------+-------+--------+10 rows in set (0.00 sec)

select *, (@i :=@i + 1) as '序号'from tb_score;
+----+--------+---------+-------+--------+| id | userid | subject | score | 序号   |+----+--------+---------+-------+--------+|  1 | 001    | 语文    |    90 |     11 ||  2 | 001    | 数学    |    92 |     12 ||  3 | 001    | 英语    |    80 |     13 ||  4 | 002    | 语文    |    88 |     14 ||  5 | 002    | 数学    |    90 |     15 ||  6 | 002    | 英语    |  75.5 |     16 ||  7 | 003    | 语文    |    70 |     17 ||  8 | 003    | 数学    |    85 |     18 ||  9 | 003    | 英语    |    90 |     19 || 10 | 003    | 政治    |    82 |     20 |+----+--------+---------+-------+--------+10 rows in set (0.00 sec)
或者
set @i=0;select id,userid,subject,score,@i:=@i+1 as '序号' from tb_score;
+----+--------+---------+-------+--------+| id | userid | subject | score | 序号   |+----+--------+---------+-------+--------+|  1 | 001    | 语文    |    90 |      1 ||  2 | 001    | 数学    |    92 |      2 ||  3 | 001    | 英语    |    80 |      3 ||  4 | 002    | 语文    |    88 |      4 ||  5 | 002    | 数学    |    90 |      5 ||  6 | 002    | 英语    |  75.5 |      6 ||  7 | 003    | 语文    |    70 |      7 ||  8 | 003    | 数学    |    85 |      8 ||  9 | 003    | 英语    |    90 |      9 || 10 | 003    | 政治    |    82 |     10 |+----+--------+---------+-------+--------+10 rows in set (0.00 sec)

解释说明1、(@i:=@i+1) 也可以写成 @i:=@i+1,加括号是为了视觉上更清晰。
它代表的意思是:变量 i 加 1 赋值给变量 i,在定义好一个变量后每次查询都会给这个变量自增,每次执行查询语句获取结果后就不需要这个变量自增了。
2、(select @i:=0) as itable,定义用户变量 i,设置初始值为 0,然后将它作为派生表使用,as 定义了表的别名。
3、set @i=0 。定义用户变量 i,赋初值为 0。
相关知识点1、mysql定义用户变量的方式:
select @变量名 ,上面的sql语句中,变量的名字是 i。
2、用户变量赋值:一种是直接用 = 号,另一种是用 := 号。
= 和 := 的区别
使用 set 命令对用户变量进行赋值时,两种方式都可以使用,即:set @变量名=xxx 或 set @变量名:=xxx
使用 select 语句对用户变量进行赋值时,只能使用 :=“ 方式,因为在 select 语句中,”= 号被看作是比较操作符。
即:select @变量名:=xxx:
①:用户变量
②:派生表
③:as设置别名
推荐学习:《mysql视频教程》
以上就是mysql查询怎么添加序号的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product