我有3列数据:
Column1具有重复的值,例如aabbcc Column2具有所有NULL值 Column3还有其他并不重要的数据 我想用值eh Hello更新Column2,但只更新column1每个值的1个实例。例如,a = Hello,但Hello的第二个实例为NULL,与bc相同,依此类推。
我可以通过以下方法找到独特的价值:
select distinct Column1
from TABLENAME
但是,当我尝试更新其他列时,它会中断。这有什么问题(可能很多!):
update TABLENAME
set Column2 = 'Hello'
where (select distinct Column1 from TABLENAME)
您可以尝试使用ROW_NUMBER窗口功能制作行号,然后仅以行号为1进行更新。
update t1
set Column2 = 'Hello'
FROM (
select *,ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY Column3) rn
from TABLENAME
) t1
where rn = 1
结果:
| Column1 | Column2 | Column3 |
|---------|---------|---------|
| a | Hello | 1 |
| a | (null) | 2 |
| b | Hello | 3 |
| b | (null) | 4 |
| c | Hello | 5 |
| c | (null) | 6 |
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。