2010-03-27 46 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