将具有多个值的 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