我的临时表有一个包含连续数字“行号”的列。
如何从表中删除记录时,如何创建此“行号”列的更新?
示例
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)'
答案 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生成行号,可以节省一些工作,服务器可以节省更新列的开销。