【问题标题】:Sql Update Query [duplicate]Sql更新查询[重复]
【发布时间】:2013-02-09 00:10:53
【问题描述】:

我有一个表T1,其中包含三列:Id, Name, Address

还有另一个表T2,其中包含两列Id, New_AddressT2Id 列与 T1 的列相同。

我需要一个查询,它会将T1Address 列更新为T2New_Address

我可以通过检查 ID 并执行更新语句通过循环来完成。怎么可以通过查询来完成?

【问题讨论】:

    标签: sql sql-server database tsql


    【解决方案1】:

    怎么样

    UPDATE T1
    SET Address = T2.New_Address
    FROM T2
    WHERE T1.id = T2.id
    

    【讨论】:

      【解决方案2】:
      UPDATE T1
      SET T1.Address = T2.New_Address
      FROM T1
      INNER JOIN T2 ON T2.ID = T1.ID
      

      【讨论】:

        【解决方案3】:
        UPDATE T1
        SET Address = (select New_Address from T2 where T1.ID=T2.ID );
        

        【讨论】:

        • 这 - 相当于 LEFT JOIN 并且 - 还将更新(将它们设置为 NULL)表 1 中在表 2 中没有 NewAdress 的所有行。
        • @ypercube - 这个查询确实有一个可能的优点是,如果有多个匹配的新地址而不是默默地选择一个不确定的地址,它将引发错误。它可以重写为SET Address = ISNULL((select New_Address from T2 where T1.ID=T2.ID ),Address);,尽管MERGE 也提供了内置的错误检查功能,并且更可取。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-08
        • 2020-02-25
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        • 2015-05-20
        相关资源
        最近更新 更多