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

hsvhsicv  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(284)

假设我有一个数据库表 services 一些数据比如 A (id=1), D (id=2), F (id=3), L (id=4), M (id=5)在mysql中。
现在我想插入另一个服务 B 在里面 service 之后的表格 A 同时还要自动排序其他数据 id .
所以 service 表是 A (id=1), B (id=2), D (id=3), F (id=4), L (id=5), M (id=6)
怎么做?

gajydyqb

gajydyqb1#

使用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);

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

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

相关问题