У меня проблема со следующим запросом на обновление в Oracle 11g:
update TABLE_A a set COL1 =
(SELECT b.COL2 FROM
(SELECT ROWNUM AS ROW_NUMBER, b.COL2 from TABLE_B b where COL3 = a.COL4)
WHERE ROW_NUMBER = 2
)
ORA-00904: "A". "COL4": неверный идентификатор.
Итак,a.COL4 не известен в подзапросе, но я не знаю, как решить эту проблему.
/ Правка.Что я пытаюсь сделать?
В TABLE_B есть несколько записей для каждой записи в TABLE_A.Новые требования от клиента, однако: TABLE_A получит 2 новых столбца, а TABLE_B будет удален.Таким образом, представление первой записи подзапроса будет записано в первое новое поле и то же самое для второго.Первая запись проста, поскольку решение Майка Си можно использовать с ROW_NUMBER = 1.
Пример строк:
TABLE_A
| col0 | col1 | col2 | col3 | col4 |
------------------------------------
| | |dummy2|dummy3| 1 |
------------------------------------
| | |dummy4|dummy5| 2 |
------------------------------------
TABLE_B
| col1 | col2 | col3 |
----------------------
| d |name1 | 1 |
----------------------
| d |name2 | 1 |
----------------------
| d |name3 | 1 |
----------------------
| d |name4 | 2 |
----------------------
TABLE_A after update
| col0 | col1 | col2 | col3 | col4 |
------------------------------------
| name1| name2|dummy2|dummy3| 1 |
------------------------------------
| name4| |dummy4|dummy5| 2 |
------------------------------------