2012-12-03 29 views
-1
UPDATE dbo.ControlBrandMapping 
SET Sequence = SUBQUERY.SORTORDER 
FROM 
    (SELECT 
     Sequence, ROW_NUMBER() OVER (ORDER BY Sequence) AS SORTORDER 
    FROM ControlBrandMapping) SUBQUERY 
WHERE ControlBrandMapping.Sequence = SUBQUERY.Sequence` 

我在這裏試圖做的是刪除我試圖更新行的序列。 在用戶屏幕上,我有一個tabelDnD,它在拖動時重新排列順序。無法更新刪除序列

讓說的順序是:

1 
2 
3 
4 
5 

可以說,現在我已刪除的行#3。我想4變成3,變成5變成4.

即,

1 
2 
3 
4 

它給了我奇怪的序列集。但同時,當我再次使用tabelDnD讀取該行時,它就會變得正常。我相信上面提到的查詢存在一些問題。

注意:這不是IDENTITY列。而且它不是我桌子上唯一的一列。

請這方面的幫助。 謝謝。

回答

2

您確定需要重新編號所有後續行嗎?這聽起來像是一個演示文稿問題,即您想向人顯示一個整齊的數字列表。這並不需要在數據庫中存儲「漂亮」的數字。

這就是說,你可以使用這樣的事情來處理一個單一的缺失:

update dbo.ControlBrandMapping 
    set Sequence = Sequence - 1 
    where Sequence > @DeletedSequence 

這樣的事情往往在有多個用戶在同一時間更新數據庫的典型系統瓦解。典型的系統也有需要更新的外部參考,等等......。

+0

感謝您的支持。一旦我回到我的辦公桌上,我會更新你是否有效。 –