2010-03-27 45 views
0

我有一个“SortID”列使用连续数字编号的表。每当一行被删除,它就会留下一个缺口。有没有使用纯SQL来更新行号的方法?事情是这样的:如何在MySQL中设置计数器列值?

UPDATE tbl SET SortID={rowindex} ORDER BY SortID 

(我知道这不是有效的SQL,这就是为什么我要求帮助)

这应该在第一行第二行设置为#1至#2 ...等。这可能使用SQL?请原谅这个措辞不佳的问题,我不确定询问这个问题的最佳方式。 :)

回答

0

您可以使用MySQL的用户定义的变量

SET @pos=0; 
SELECT @pos:[email protected]+1, * FROM tbl ORDER BY SortID; 
1

你确定你需要它吗?表示层用于大部分时间的编号。

+0

这是用于存储由用户维护的项目列表的排序顺序。 – 2010-03-27 21:53:38

+0

@Jon但每当一行被删除时,这个“间隔”不会影响排序顺序 – 2010-03-27 23:19:51

+0

不一定在删除,但是在插入时确实会影响顺序。我通常对行数为2的行进行编号,然后我可以在中间插入一个新行,并在同一个事务中更新sortID。 – 2010-03-27 23:30:55