我有一个带有“SortID”列的表,该列使用连续数字编号。每当删除一行时,就会留下空隙。有没有办法使用纯SQL来更新行的行号?像这样:
UPDATE tbl SET SortID={rowindex} ORDER BY SortID
(我意识到这不是有效的SQL,这就是我要求帮助的原因)
这应该将第一行设置为#1,将第二行设置为#2 ...等。这是否可以使用SQL?请原谅措辞不好的问题,我不确定最好的方式来问这个问题。 :)
答案 0 :(得分:4)
MySQL variables可以用于此目的。
SET @a:=0;
UPDATE tbl SET sortId=@a:=@a+1 ORDER BY sortId;
答案 1 :(得分:1)
您可以使用mysql用户定义的变量
SET @pos=0;
SELECT @pos:=@pos+1, * FROM tbl ORDER BY SortID;
答案 2 :(得分:1)
你确定需要它吗?表示层用于大部分时间的编号。