开发者社区> 问答> 正文

SQL Server-更新不同的值

我有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)

展开
收起
Puppet 2020-01-04 11:33:31 451 0
1 条回答
写回答
取消 提交回答
  • 您可以尝试使用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 |
    
    2020-01-04 11:33:54
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载