添加新行后如何在数据库表中自动排序 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?的主要内容,如果未能解决你的问题,请参考以下文章