【问题标题】:t-sql merging two tables and replace null valuest-sql 合并两个表并替换空值
【发布时间】:2022-01-24 02:45:39
【问题描述】:

我有这两个表,我想比较一下表2中是否有空值,如果有,将表1中的现有值替换为表2中的空值(通过作为主键的代码列)。

         Table 1
Code       Name          Points
 1     Juan Perez          10
 2     Marco Salgado       5
 3     Carlos Soto         9
 4     Alberto Ruiz        12
 5     Alejandro Castro    5
 10    Jonatan Polanco     0
 11    JD                 NULL


          Table 2
Code       Name          Points
 1     Juan Perez          10
 2     Marco Salgado       5
 3     Carlos Soto         9
 4     Alberto Ruiz        12
 5     Alejandro Castro    5
 10    Null                0
 11    JD                  9

生成的表格应如下所示

         Table 2
Code       Name          Points
 1     Juan Perez          10
 2     Marco Salgado       5
 3     Carlos Soto         9
 4     Alberto Ruiz        12
 5     Alejandro Castro    5
 10    Jonatan Polanco     0
 11    JD                  9

【问题讨论】:

  • 我尝试过合并和选择子句,但没有。我很感激你的帮助
  • 不“将表 1 中的现有值替换为表 2 中的空值”意味着您的预期结果应包含 '10'/NULL/'0',而不是 '10' /'Jonatan Polanco'/'0'? '11'/'JD'/NULL 行不应该保持不变吗?请向我们展示您尝试过的方法并解释哪些方法不起作用。

标签: sql tsql merge


【解决方案1】:

如果您尝试更新 Points 列中具有空值的行,您只需连接两个表并添加 where 子句以将行限制为要更新的行。像这样的

UPDATE t2
  SET Points = t.Points
FROM table_1 t
JOIN table_2 t2
  ON t.code = t2.code 
WHERE t2.Points IS NULL  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2019-04-28
    • 2014-01-06
    • 2023-01-03
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多