我有一个“SortID”列使用连续数字编号的表。每当一行被删除,它就会留下一个缺口。有没有使用纯SQL来更新行号的方法?事情是这样的:如何在MySQL中设置计数器列值?
UPDATE tbl SET SortID={rowindex} ORDER BY SortID
(我知道这不是有效的SQL,这就是为什么我要求帮助)
这应该在第一行第二行设置为#1至#2 ...等。这可能使用SQL?请原谅这个措辞不佳的问题,我不确定询问这个问题的最佳方式。 :)
我有一个“SortID”列使用连续数字编号的表。每当一行被删除,它就会留下一个缺口。有没有使用纯SQL来更新行号的方法?事情是这样的:如何在MySQL中设置计数器列值?
UPDATE tbl SET SortID={rowindex} ORDER BY SortID
(我知道这不是有效的SQL,这就是为什么我要求帮助)
这应该在第一行第二行设置为#1至#2 ...等。这可能使用SQL?请原谅这个措辞不佳的问题,我不确定询问这个问题的最佳方式。 :)
MySQL variables可以用于此目的。
SET @a:=0;
UPDATE tbl SET [email protected]:[email protected]+1 ORDER BY sortId;
您可以使用MySQL的用户定义的变量
SET @pos=0;
SELECT @pos:[email protected]+1, * FROM tbl ORDER BY SortID;
你确定你需要它吗?表示层用于大部分时间的编号。
这是用于存储由用户维护的项目列表的排序顺序。 – 2010-03-27 21:53:38
@Jon但每当一行被删除时,这个“间隔”不会影响排序顺序 – 2010-03-27 23:19:51
不一定在删除,但是在插入时确实会影响顺序。我通常对行数为2的行进行编号,然后我可以在中间插入一个新行,并在同一个事务中更新sortID。 – 2010-03-27 23:30:55