我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL自动为查询数据结果加序号

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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,加括号是为了视觉上更清晰。

它代表的意思是:变量 i1 赋值给变量 i,在定义好一个变量后每次查询都会给这个变量自增,每次执行查询语句获取结果后就不需要这个变量自增了。

2、(SELECT @i:=0) AS itable,定义用户变量 i,设置初始值为 0,然后将它作为派生表使用,AS 定义了表的别名。

3、SET @i=0 。定义用户变量 i,赋初值为 0

相关知识点

1、MySQL定义用户变量的方式:

select @变量名 ,上面的SQL语句中,变量的名字是 i

2、用户变量赋值:一种是直接用 "=" 号,另一种是用 ":=" 号。

=:= 的区别

使用 set 命令对用户变量进行赋值时,两种方式都可以使用,即:SET @变量名=xxxSET @变量名:=xxx

使用 select 语句对用户变量进行赋值时,只能使用 ":=“ 方式,因为在 select 语句中,”=" 号被看作是比较操作符。

即:SELECT @变量名:=xxx

①:用户变量

②:派生表

③:AS设置别名

到此这篇关于MySQL自动为查询数据结果加序号的文章就介绍到这了,更多相关MySQL给查询加序号内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL自动为查询数据结果加序号

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL自动为查询数据结果加序号

目录数据表mysql给查询加序号解释说明相关知识点数据表DROP TABLE IF EXISTS tb_score;CREATE TABLE tb_score(id INT(11) NOT NULL auto_increment,use
2022-12-16

MySQL怎么实现自动为查询数据结果加序号

这篇文章主要介绍“MySQL怎么实现自动为查询数据结果加序号”,在日常操作中,相信很多人在MySQL怎么实现自动为查询数据结果加序号问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL怎么实现自动为查询数
2023-01-04

MySQL中怎么对查询结果加序号

在MySQL中,可以使用变量来对查询结果加序号。可以通过以下步骤来实现:编写查询语句,包括要查询的字段和表名。在查询语句的SELECT子句中定义一个变量,并为其赋初值为0。在查询语句的SELECT子句中使用@变量名:=@变量名+1的方式来对
MySQL中怎么对查询结果加序号
2024-04-09

mysql查询结果怎么生成序列号

在 MySQL 中,可以通过使用用户变量来生成序列号。以下是一个示例查询,演示如何生成序列号:SET @row_number = 0;SELECT @row_number:=@row_number+1 AS sequence_number
mysql查询结果怎么生成序列号
2024-05-21

SQL查询结果数据排序(二)

> 本节讲述 对查询结果进行排序1 以指定的次序返回查询结果查询 用户表中所有用户的 姓名 年龄 地区,并按照年龄的升序排列,可以使用 order by 子句select user_name,user_age,user_province from t_user
SQL查询结果数据排序(二)
2019-11-07

怎么在laravel数据库中将查询结果自动转换成数组

本篇文章为大家展示了怎么在laravel数据库中将查询结果自动转换成数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。引用use PDO; DB::setFetchMode(PDO::FETCH_A
2023-06-06

如何将 MySQL 查询结果数组转换为对象?

将 mysql 查询结果数组转换为对象的方法如下:创建一个空对象数组。循环结果数组并为每一行创建一个新的对象。使用 foreach 循环将每一行的键值对赋给新对象的相应属性。将新对象添加到对象数组中。关闭数据库连接。如何将 MySQL 查询
如何将 MySQL 查询结果数组转换为对象?
2024-04-29

mysql怎么查询序号中未出现的数据

可以使用以下SQL语句来查询序号中未出现的数据:SELECT missing_numbers.numberFROM (SELECT ones.number + tens.number * 10 + hundreds.number * 1
mysql怎么查询序号中未出现的数据
2024-04-16

mysql update语句根据子查询结果把子查询数据写入修改字段

需求,应用场景 table1是统计信息表,里面存储了商店id,一个商店一条数据,table2是订单表,里面存储了多个订单,每条订单有一个字段是table1的商店id,table3是商品表,存储了多个商品,table2里面的每条数据在table3里面有1-N条商
mysql update语句根据子查询结果把子查询数据写入修改字段
2019-09-22

编程热搜

目录