0


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

在MySQL 8.0版本中,你可以使用ROW_NUMBER()函数来添加序号。以下是一个示例查询,演示如何添加序号:

SELECT 
    ROW_NUMBER()OVER(ORDERBY column_name)AS serial_number,
    column1, column2,...FROM
    your_table;

请将column_name替换为你想要按照哪一列排序的列名。还可以添加其他需要的列,以在结果中显示它们。

这个查询将返回一个名为serial_number的新列,其中包含每行的序号。序号是根据ORDER BY子句中指定的列进行排序的。

需要注意的是,ROW_NUMBER()函数是在MySQL 8.0版本中引入的。在MySQL 5.7版本中,该函数不可用。如果你使用的是MySQL 5.7版本,并且需要添加序号,你可以考虑其他方法,例如使用变量或自增列。以下是一个使用变量的示例查询:

SELECT@row_number:=@row_number+1AS serial_number,
    column1, column2,...FROM
    your_table,(SELECT@row_number:=0)AS t
ORDERBY column_name;

在这个示例中,我们使用一个变量@row_number来追踪行号。通过将变量递增并与其他查询一起使用,你可以为每行添加一个序号。请记得将column_name替换为你想要按照哪一列排序的列名。

由于我安装的是MySQL 5.7版本的,下面用MySQL 5.7的演示一下:
查看版本号:

select version();

输出:
在这里插入图片描述
数据准备:

-- demo.schedule definitionCREATETABLE`schedule`(`id`int(10)unsignedNOTNULLAUTO_INCREMENTCOMMENT'id',`start_time`datetimeNOTNULL,`end_time`datetimeNOTNULL,`employee_id`int(10)unsignedDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=latin1;

插入数据:

INSERTINTO demo.schedule
(start_time, end_time, employee_id)VALUES('2023-09-08 07:50:00','2023-09-08 12:00:00',1);INSERTINTO demo.schedule
(start_time, end_time, employee_id)VALUES('2023-09-08 12:40:00','2023-09-08 17:20:00',1);INSERTINTO demo.schedule
(start_time, end_time, employee_id)VALUES('2023-09-08 18:10:00','2023-09-08 20:30:00',1);

查询数据,给记录添加序列号:

SELECT@row_number:=@row_number+1AS serial_number,
    s.*FROM
    schedule s,(SELECT@row_number:=0)AS t
ORDERBY s.end_time ;

输出结果:
在这里插入图片描述

标签: mysql 数据库

本文转载自: https://blog.csdn.net/qq_22744093/article/details/132753775
版权归原作者 科学熊 所有, 如有侵权,请联系我们删除。

“【Mysql】给查询记录增加序列号方法”的评论:

还没有评论