【问题标题】:How to auto ordering ID in a database table after adding a new row?添加新行后如何在数据库表中自动排序 ID?
【发布时间】: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 的值无关紧要,您可以按您希望排序的字段进行排序。

标签: mysql sql database phpmyadmin xampp


【解决方案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    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多