添加新行后如何在数据库表中自动排序 ID?

Posted

技术标签:

【中文标题】添加新行后如何在数据库表中自动排序 ID?【英文标题】:How to auto ordering ID in a database table after adding a new row? 【发布时间】:2019-01-14 04:44:14 【问题描述】:

假设我有一个数据库表services,其中包含一些数据,例如A(id=1)、D(id=2)、F(id=3)、L(id=4 ), M(id=5) 在 mysql 中。

现在我想在A 之后的service 表中插入另一个服务B,并且还想自动排序其他数据id

所以service表的新数据为A(id=1)、B(id=2)、D(id=3)、F(id=4)、@ 987654336@(id=5), M(id=6)

怎么做?

【问题讨论】:

id 是 auto_increment 列吗? 你为什么要这样做? @P.Salmonyes ... 自动递增 在这种情况下,它不是自动 id 您无法保证查询将按什么顺序返回数据,除非您明确对其进行排序,因此 id 的值无关紧要,您可以按您希望排序的字段进行排序。 【参考方案1】:

使用 MySQL 变量。

例如,如果您有:

create table services (
  name varchar(10),
  id int
);

insert into services (name, id) values ('A', 1);
insert into services (name, id) values ('D', 2);
insert into services (name, id) values ('F', 3);
insert into services (name, id) values ('L', 4);
insert into services (name, id) values ('M', 5);

然后你插入一个新行B:

insert into services (name, id) values ('B', null);

然后,您可以使用变量更新 id:

set @newid = 0;
update services set id = (@newid := @newid + 1)
order by name;

结果:

name        id           
----------  --
A           1            
B           2            
D           3            
F           4            
L           5            
M           6    

【讨论】:

以上是关于添加新行后如何在数据库表中自动排序 ID?的主要内容,如果未能解决你的问题,请参考以下文章

将自动增量列添加到按日期排序的现有表中

有啥方法可以自动将新行添加到 sql 中的联结表中?

当我的数据库表中添加了新行时,如何自动向我的 android 应用程序用户发送通知

在 MySQL 表中复制行后如何返回行 ID?

如何从此表中选择并添加平均值然后排序[重复]

在数据库中添加新行时,报表工作室中生成的自动更新报表