Я не могу понять проблему с помощью следующего запроса SQL. Я пытаюсь скопировать столбец ABC из таблицы TABLE3 в TABLE1 с таблицей TABLE2, имеющей общий столбец между ними.
UPDATE TABLE1 CS
SET CS.ABC = TC.ABC
WHERE CS.COMMON_COLUMN = (
SELECT CGL.COMMON_COLUMN
FROM TABLE2 CGL,
TABLE3 TC
WHERE CGL.PRD_ID = TC.PRD_ID
AND CGL.PRD_VER = TC.PRD_VER
AND CGL.PY_ID = TC.PY_ID
AND CGL.TPY_ID = TC.TPY_ID
)
Я сталкиваюсь с ошибкой:
Ошибка SQL: ORA-00904: «TC». «ABC»: неверный идентификатор
00904. 00000 - "% s: неверный идентификатор"
* Причина:
* Действие:
[править; Пожалуйста, прочтите объяснение ниже]
Поэтому я обновил запрос, чтобы сделать его более понятным с моим объяснением. Table1
и Table2
связаны 4 колонками PRD_ID, PRD_VER, PY_ID and TPY_ID
. Эта комбинация находит несколько строк в таблице 2, поскольку она не является комбинацией уникальный / первичный ключ. Для каждой строки, извлеченной из таблицы 2, столбец common_column
- это то, что необходимо для обновления таблицы 3, поскольку common_column
связывается только с одной строкой.
Пример.
Table1
PRD_ID, PRD_VER, PY_ID, TPY_ID, COLUMN_USED_FOR_UPDATE
------------------------------------------------------
1 , 1 , 1 ,1 , VALUE1
2 , 3 , 4 , 5 , VALUE2
Table2
PRD_ID, PRD_VER, PY_ID, TPY_ID, COMMON_COLUMN
------------------------------------------------
1 , 1 , 1, 1, A
1 , 1 , 1, 1, B
2, 3 , 4, 5, C
Таблица 3
COMMON_COLUMN, .... , COLUMN_TO_UPDATE
-------------------------------------------------------
A, ..... , null
B, .... , null
C, .... , null
Поэтому после выполнения запроса таблица 3 должна выглядеть следующим образом:
COMMON_COLUMN, .... , COLUMN_TO_UPDATE
-------------------------------------------------------
A, ..... , VALUE1
B, .... , VALUE1
C, .... , VALUE2