表名:销售
Country salesAmount ID
USA 2345 1
USA 4356 2
USA 8762 3
USA 7809 4
USA 54324 5
UK 56790 6
UK 234145 NULL --> add 7
UK 567790 NULL --> add 8
UK 345678 NULL --> add 9
UK 343456 NULL --> add 10
UK 5467891 NULL --> add 11
UK 5923765 NULL --> add 12
Japan 43567890 NULL --> add 13
China 34566878 NULL --> add 14
France 343466 NULL --> add 15
Austria 3556689 NULL --> add 16
India 34567891 NULL --> add 17
Italy 3456767 NULL --> add 18
我需要用箭头旁边的数字填充空值。有没有更快捷的方法将这些数字添加到ID列而不是使用代码(更新销售集ID = 7,其中salesAmount = 234145)
我必须为每一行使用update语句,直到结束这是非常耗时的。是否存在可用于更新一个查询中的所有行的存储过程或函数?请帮忙。感谢
答案 0 :(得分:1)
是的,您可以使用ROW_NUMBER()
。
UPDATE A SET ID = New_ID FROM (
SELECT
ID,
ROW_NUMBER() OVER (ORDER BY CASE WHEN ID IS NULL THEN 1 ELSE 0 END, ID) AS New_ID
-- The row numbers are ordered by whether ID is null first, then by ID so that the nulls are at the end of the order
FROM sales
) AS A
WHERE ID IS NULL