【Mysql】给查询记录增长序列号方法

打印 上一主题 下一主题

主题 882|帖子 882|积分 2646

在MySQL 8.0版本中,你可以利用ROW_NUMBER()函数来添加序号。以下是一个示例查询,演示如何添加序号:
  1. SELECT
  2.     ROW_NUMBER() OVER (ORDER BY column_name) AS serial_number,
  3.     column1, column2, ...
  4. FROM
  5.     your_table;
复制代码
请将column_name更换为你想要按照哪一列排序的列名。还可以添加其他必要的列,以在结果中显示它们。
这个查询将返回一个名为serial_number的新列,其中包罗每行的序号。序号是根据ORDER BY子句中指定的枚举行排序的。
必要注意的是,ROW_NUMBER()函数是在MySQL 8.0版本中引入的。在MySQL 5.7版本中,该函数不可用。如果你利用的是MySQL 5.7版本,并且必要添加序号,你可以考虑其他方法,例如利用变量或自增列。以下是一个利用变量的示例查询:
  1. SELECT
  2.     @row_number:=@row_number + 1 AS serial_number,
  3.     column1, column2, ...
  4. FROM
  5.     your_table, (SELECT @row_number:=0) AS t
  6. ORDER BY column_name;
复制代码
在这个示例中,我们利用一个变量@row_number来追踪行号。通过将变量递增并与其他查询一起利用,你可以为每行添加一个序号。请记得将column_name更换为你想要按照哪一列排序的列名。
由于我安装的是MySQL 5.7版本的,下面用MySQL 5.7的演示一下:
查看版本号:
  1. select version();
复制代码
输出:

数据准备:
  1. -- demo.schedule definition
  2. CREATE TABLE `schedule` (
  3.   `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
  4.   `start_time` datetime NOT NULL,
  5.   `end_time` datetime NOT NULL,
  6.   `employee_id` int(10) unsigned DEFAULT NULL,
  7.   PRIMARY KEY (`id`)
  8. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
复制代码
插入数据:
  1. INSERT INTO demo.schedule
  2. (start_time, end_time, employee_id)
  3. VALUES('2023-09-08 07:50:00', '2023-09-08 12:00:00', 1);
  4. INSERT INTO demo.schedule
  5. (start_time, end_time, employee_id)
  6. VALUES('2023-09-08 12:40:00', '2023-09-08 17:20:00', 1);
  7. INSERT INTO demo.schedule
  8. (start_time, end_time, employee_id)
  9. VALUES('2023-09-08 18:10:00', '2023-09-08 20:30:00', 1);
复制代码
查询数据,给记录添加序列号:
  1. SELECT
  2.     @row_number:=@row_number + 1 AS serial_number,
  3.     s.*
  4. FROM
  5.     schedule s, (SELECT @row_number:=0) AS t
  6. ORDER BY s.end_time ;
复制代码
输出结果:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表