【问题标题】:Update multiple columns with Joining 2 tables in SQL在 SQL 中使用 Joining 2 个表更新多个列
【发布时间】:2021-05-13 03:49:50
【问题描述】:

以下是我用于更新的代码。在以下条件下,SRC 和 LKP 表之间的匹配记录为 31。但是当我运行以下更新语句时,它正在更新 200 条记录。您能否建议问题出在哪里

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)

【问题讨论】:

    标签: sql oracle join sql-update


    【解决方案1】:

    你有两个问题:

    • 您没有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) 上的索引。

    【讨论】:

    • 嗨@Gordon Linoff。我对 5M 记录运行了这个查询,它一直在运行。有没有办法提高这个查询的性能?
    • @Yogeeyadav 。 . .索引应该可以解决这个问题。我将建议添加到答案中。
    • 谢谢。将尝试索引
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多