一尘不染

用于在中间行中插入新行的MySQL语法?

mysql

mysql sintax用于在中间行或我们想要的任何地方插入新行而不更新现有行,而是自动增加主键(id)?

' id | value
' 1  | 100
' 2  | 200
' 3  | 400
' 4  | 500

我想在id 2之后插入一个新行,其值=300。我希望输出如下:

' id | value
' 1  | 100
' 2  | 200
' 3  | 300  <-- new row with id (automatic increment)
' 4  | 400  <-- id=id+1
' 5  | 500  <-- id=id+1

谢谢。


阅读 245

收藏
2020-05-17

共1个答案

一尘不染

您将不得不将其分为2个操作。

START TRANSACTION;

UPDATE table1 SET id = id + 1 WHERE id >= 3 order by id DESC;

INSERT INTO table1 (id, value) VALUES (3, 300);

COMMIT;

请注意,您需要order by在update语句中使用,因此它将首先从最高ID开始。

另一个想法是在2到3之间声明idas decimal(10,1)并将值插入2.5id。

2020-05-17