首页 / 问答 / SQL Server数据库如何将一个表的某个/某些字段的数据更新成另一个表的某个/某些字段的数据呢?

SQL Server数据库如何将一个表的某个/某些字段的数据更新成另一个表的某个/某些字段的数据呢?

0

在SQL Server数据库中,需要根据一个表(表B)的某个或者某些字段的数据更新另一个表(表A)中某个或者某些字段的值,使用SQL脚本应该如何实现呢?

回复 [×]
提交评论
请输入评论内容

6 个回答

  • 0

    使用INNER JOIN连接A,B两张表可以实现一条SQK脚本语句将一个表的字段数据更新成另一个表相应的字段值,如下:

    登录后复制
    UPDATE Table_A SET Table_A.col1 = Table_B.col1, Table_A.col2 = Table_B.col2 FROM Some_Table AS Table_A INNER JOIN Other_Table AS Table_B ON Table_A.id = Table_B.id WHERE Table_A.col3 = 'cool'
    Rector的个人主页

    Rector

    2020-04-28 回答

    • 0

      在SQL Server 2008及以上版本中,还可以使用MERGE来实现关联更新,如下:

      登录后复制
      MERGE INTO YourTable T USING other_table S ON T.id = S.id AND S.tsql = 'cool' WHEN MATCHED THEN UPDATE SET col1 = S.col1, col2 = S.col2;

      或者

      登录后复制
      MERGE INTO YourTable T USING ( SELECT id, col1, col2 FROM other_table WHERE tsql = 'cool' ) S ON T.id = S.id WHEN MATCHED THEN UPDATE SET col1 = S.col1, col2 = S.col2;
      Rector的个人主页

      Rector

      2020-04-28 回答

      • 0

        用一个子查询来实现关联更新,SQL脚本如下:

        登录后复制
        UPDATE YourTable SET Col1 = OtherTable.Col1, Col2 = OtherTable.Col2 FROM ( SELECT ID, Col1, Col2 FROM other_table) AS OtherTable WHERE OtherTable.ID = YourTable.ID
        Rector的个人主页

        Rector

        2020-04-28 回答

        • 0
          登录后复制
          UPDATE t SET t.col1 = o.col1, t.col2 = o.col2 FROM other_table o JOIN t ON t.id = o.id WHERE o.sql = 'cool'
          Rector的个人主页

          Rector

          2020-04-28 回答

          • 0

            使用CTE来实现SQL的关联更新,如下:

            登录后复制
            ;WITH CTE AS (SELECT T1.Col1, T2.Col1 AS _Col1, T1.Col2, T2.Col2 AS _Col2 FROM T1 JOIN T2 ON T1.id = T2.id WHERE EXISTS(SELECT T1.Col1, T1.Col2 EXCEPT SELECT T2.Col1, T2.Col2)) UPDATE CTE SET Col1 = _Col1, Col2 = _Col2
            Rector的个人主页

            Rector

            2020-04-28 回答

            • 0
              登录后复制
              UPDATE table_to_update, table_info SET table_to_update.col1 = table_info.col1, table_to_update.col2 = table_info.col2 WHERE table_to_update.ID = table_info.ID
              Rector的个人主页

              Rector

              2020-04-28 回答

              我来回答