删除记录后如何重新编号列

时间:2016-06-07 07:56:24

标签: mysql sql asp.net vb.net

我的临时表有一个包含连续数字“行号”的列。

如何从表中删除记录时,如何创建此“行号”列的更新?

示例

ID    Name    Row_Number
1     Jack    1
14    John    2
17    Bella   3

如果我删除ID = 14的记录,我想将ID = 17的记录更新为row_number 2

我试过这个:

SET @deletestr = ' DELETE FROM  ' + @tablename
        + ' where isnull(ltrim(rtrim([Row_Number])),0)=isnull(ltrim(rtrim(@originalRow_Number)),0)'

3 个答案:

答案 0 :(得分:0)

删除记录后,您可以尝试使用以下内容重新编号表格。

UPDATE x
SET x.row_number = x.new_row_number
FROM ( 
    SELECT ROW_NUMBER() OVER (Order by Id) AS new_row_number, row_number    
    FROM @tableName
) x

答案 1 :(得分:0)

SET @deletestr = ' DELETE FROM  ' + @tablename
            + ' where isnull(ltrim(rtrim([Row_Number])),0)=isnull(ltrim(rtrim(@originalRow_Number)),0)'

答案 2 :(得分:0)

我建议您不要打扰,因为行号为easy to derive并且需要维护。

您问题的任何SQL解决方案都将涉及自联接,因为这是查找下一个最低值的方法。通过使用Select生成行号,可以节省一些工作,服务器可以节省更新列的开销。