我有一个这样的 mySql 表(简化)
Id*| Text | Pos (integer)
-----------
A | foo | 0
B | bar | 1
C | baz | 2
D | qux | 3
现在,在我删除一行之后,我想更新剩余行的 Pos 值,这样就不会发现“洞”或间隙。
例如,如果删除了 Id='C' 的行,则剩余表应为:
Id*| Text | Pos (integer)
-----------
A | foo | 0
B | bar | 1
D | qux | 2
这可能在单个查询中吗?
更新 根据接受的答案,这是我的问题的解决方案:
START TRANSACTION;
SELECT @A:=pos FROM table_name WHERE Id= 'C';
DELETE FROM table_name WHERE Id = 'C';
UPDATE table_name SET Pos = Pos - 1 WHERE Pos > @A;
COMMIT;