将具有多个值的 table 查询更新到列
Update table query with multiple values to a column
Table姓名:销售
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)
我必须对每一行使用更新语句直到最后,这很耗时。是否有可用于更新一个查询中的所有行的存储过程或函数?请帮忙。谢谢
是的,你可以 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
Table姓名:销售
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)
我必须对每一行使用更新语句直到最后,这很耗时。是否有可用于更新一个查询中的所有行的存储过程或函数?请帮忙。谢谢
是的,你可以 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