Oracle - копировать столбец в другую таблицу с условием - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь скопировать один столбец из ТАБЛИЦЫ 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.

Любое решение?

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Вы хотите обновление здесь, а не вставку:

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);
0 голосов
/ 07 февраля 2020

Другим способом достижения желаемого результата является использование оператора 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;

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...