SQL移动所有后续行

时间:2014-04-05 19:57:57

标签: mysql sql

我有一个表,其中每一行都有一个主键ID(有序ASC),这只是一个数字。有没有办法在两个其他行之间插入一行,首先将它下面的所有行移动一个?

1 个答案:

答案 0 :(得分:3)

是的,你可以想要插入ID为2的行

CREATE TABLE Table1
    (id INT,`test` varchar(10))
;

INSERT INTO Table1
    (id,`test`)
VALUES
    (1,'val'),
    (2,'val'),
    (3,'val')
;

演示表有3条记录,现在你已经分配了id 2,你想为id 2添加行,并将所有id增加1

update Table1 
set id =id+1
where id >1
ORDER BY id DESC;

INSERT INTO Table1
    (id,`test`)
VALUES
    (2,'my val');
  

在更新中,主键必须ORDER BY id DESC才能忽略重复输入错误

SELECT * FROM Table1 order by id

Fiddle Demo