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

wir*_*dha 17 mysql insert

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

' id | value
' 1  | 100
' 2  | 200
' 3  | 400
' 4  | 500
Run Code Online (Sandbox Code Playgroud)

我想在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 
Run Code Online (Sandbox Code Playgroud)

谢谢.

Joh*_*ica 34

您必须将其拆分为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;
Run Code Online (Sandbox Code Playgroud)

请注意,您需要order by在update语句中,因此它将首先以最高ID开头.

另一个想法是声明iddecimal(10,1)2.5在2和3之间插入值作为id.