簡體   English   中英

如何重置列值

[英]how to reset the column value

我有9條記錄的表,刪除了_id = 1的2條記錄:

id   |   name    |    index    |    _id
 1        a            1             1
 8        b            3             1
 9        c            7             1
 10       d            4             1
 15       e            2             1
 16       d            1             2
 17       e            2             2

我想像這樣重置_id = 1的索引:

id   |   name    |    index    |    _id
 1        a            1             1
 8        b            2             1
 9        c            3             1
 10       d            4             1
 15       e            5             1
 16       d            1             2
 17       e            2             2

我會用這個查詢

declare @_idCount int = (select count(*) from tbl where _id = 1), 
        @index int = 1

while(@_idCount > 0)
    begin
        update tbl
        set code = @index
        where _id = 1

        set @index = @index + 1
        set @picCount = @picCount - 1
    end

但是此代碼使用相同的代碼設置了所有記錄。 我該怎么解決?

您可以簡單地使用ROW_NUMBER

WITH CTE AS
(
    SELECT id,
           name,
           [index],
           [_id],
           new_index = ROW_NUMBER() OVER(PARTITION BY [_id] 
                                         ORDER BY [id])
    FROM dbo.tbl
)
UPDATE CTE
SET [index] = new_index;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM