【问题标题】:Update value of column in one table from a column in another table where ID's do not match从 ID 不匹配的另一个表中的列更新一个表中的列的值
【发布时间】:2020-06-23 22:15:01
【问题描述】:

当 ID 列匹配时我知道该怎么做,当它们不匹配时我不知道该怎么做。我需要用另一个数据库中的列的值更新一个数据库中表的一行中的值。他们没有相同的ID。

UPDATE DevDatabase
SET DevDatabase.ReportData = TESTDatabase.ReportData
Where DevDatabase.SavedReportId = '0B6D01B7-D52E-4799-B809-DA375449AF30'
FROM TESTDatabase.[SavedReport] TEST
where TEST.SavedReportId =   '02F62AD5-7DA2-414D-873E-1ED6B922DB53'

我希望上面的代码虽然不正确,但能证明我需要什么。

【问题讨论】:

    标签: sql sql-server tsql join sql-update


    【解决方案1】:

    您也可以按照最初的意图使用更新/加入语法:

    • 查询中应该只有一个WHERE子句

    • update 子句应引用from 子句中定义的表(或别名)

    查询:

    UPDATE d
    SET ReportData = t.ReportData
    FROM DevDatabase.SavedReport d
    JOIN TESTDatabase.[SavedReport] t 
        ON t.SavedReportId = '02F62AD5-7DA2-414D-873E-1ED6B922DB53'
    WHERE d.SavedReportId = '0B6D01B7-D52E-4799-B809-DA375449AF30'
    

    【讨论】:

      【解决方案2】:

      使用子查询:

      UPDATE DevDatabase.SavedReport
      SET ReportData = (SELECT ReportData 
                       FROM TESTDatabase.[SavedReport] TEST 
                       WHERE TEST.SavedReportId = '02F62AD5-7DA2-414D-873E-1ED6B922DB53')
      Where SavedReportId = '0B6D01B7-D52E-4799-B809-DA375449AF30'
      

      【讨论】:

      • 非常感谢!
      猜你喜欢
      • 2021-08-11
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2019-10-27
      • 1970-01-01
      相关资源
      最近更新 更多