使用 SQL 中的 Joining 2 tables 更新多列

Update multiple columns with Joining 2 tables in SQL

下面是我用于更新的代码。在以下条件下,SRC 和 LKP table 之间的匹配记录是 31。但是当我 运行 下面的更新语句正在更新 200 records.Could 您请建议问题出在哪里

UPDATE SRC  src      
  SET (src.A,src.B,src.C,src.D) = (select lkp.A,lkp.B,lkp.C,'1' 
                                   from LKP lkp
                                     inner join SRC
                                            ON src.id_1=lkp.id_1
                                           and src.CC=lkp.CC)

您有两个问题:

  • 您没有 WHERE 子句,因此所有列都已更新。
  • 您在子查询中引用了 SRC

我猜你想要的是:

UPDATE SRC src      
  SET (src.A, src.B, src.C, src.D) =
        (select lkp.A, lkp.B, lkp.C, '1' 
         from LKP lkp
         where src.id_1 = lkp.id_1 and src.CC = lkp.CC
        )
  WHERE EXISTS (select 1
                from LKP lkp
                where src.id_1 = lkp.id_1 and src.CC = lkp.CC
               );

为了提高性能,您需要在 LKP(id_1, cc) 上建立索引。