【问题标题】:Oracle - Copy column to another table with conditionOracle - 将列复制到另一个有条件的表
【发布时间】:2020-02-07 17:43:22
【问题描述】:

我正在尝试将一列从表 A 复制到表 B。 我在网上看到了一些解决方案,但没有一个显示如何添加条件。

TABLE A:

TABLE_A_ID
COLUMN_TO_COPY


TABLE B:

TABLE_B_ID
TABLE_A_FK
NEW_COLUMN

我想将 COLUMN_TO_COPY 复制到 NEW_COLUMN 但其中 TABLE_A_ID = TABLE_A_FK

我试过了:

INSERT INTO TABLE_B (NEW_COLUMN )
    SELECT COLUMN_TO_COPY 
    FROM TABLE_A
    WHERE TABLE_A_ID = TABLE_A_FK

但查询不知道 TABLE_A_FK 是什么。

有什么办法吗?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    您需要更新,而不是插入:

    UPDATE TABLE_B b
    SET NEW_COLUMN = (SELECT COLUMN_TO_COPY FROM TABLE_A a WHERE a.TABLE_A_ID = b.TABLE_A_FK);
    

    如果您只想在两个表之间发生实际匹配时进行更新,则添加一个存在子句:

    UPDATE TABLE_B b
    SET NEW_COLUMN = (SELECT COLUMN_TO_COPY FROM TABLE_A a WHERE a.TABLE_A_ID = b.TABLE_A_FK)
    WHERE EXISTS (SELECT 1 FROM TABLE_A a WHERE a.TABLE_A_ID = b.TABLE_A_FK);
    

    【讨论】:

    • 我只比真空中的光快。不然我会慢一点:-)
    【解决方案2】:

    实现预期结果的另一种方法是使用MERGE 语句,如下所示:

    MERGE INTO TABLE_B B 
    USING ( SELECT * FROM TABLE_A) A 
    ON ( A.TABLE_A_ID = B.TABLE_A_FK )
    WHEN MATCHED THEN 
    UPDATE SET B.NEW_COLUMN = A.COLUMN_TO_COPY;
    

    干杯!!

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2020-05-28
      • 2012-07-13
      • 2013-03-20
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      相关资源
      最近更新 更多