首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对一列更新具有多个值的表查询

对一列更新具有多个值的表查询
EN

Stack Overflow用户
提问于 2018-06-08 06:50:41
回答 1查看 14关注 0票数 0

表名: sales

代码语言:javascript
复制
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列中,而不是使用代码(Update sales set ID=7 where salesAmount = 234145)

我必须对每一行使用update语句,直到末尾,这很耗时。有没有一个存储过程或函数可以用来更新一个查询中的所有行?请帮帮忙。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 07:07:16

是的,您可以使用ROW_NUMBER()

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50751165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档