Вот упрощенный пример таблицы:
MAGIC_TABLE
titi | tata
-----------
val1 | magic1
val2 | magic2
val3 | magic1
val4 | magic1
val5 | magic2
То, чего я хочу добиться, ->
Для каждой строки, которая имеет tata = 'magic2'
и какое-то значение в titi
, если ононе существует строки 'magic1'
с тем же значением тити , тогда я должен добавить строку с titi.value
и 'magic1'
Вот упрощенная версия моего SQL-запроса оракула, которыйЯ работаю над:
merge into MAGIC_TABLE magic
using (
with UNMAGIC_TABLE as (
select titi, tata from MAGIC_TABLE
and tata='magic1'
)
SELECT titi, tata from UNMAGIC_TABLE
) really_unmagic
on
(
magic.titi = really_unmagic.titi
magic.tata = really_unmagic.tata
and magic.tata='magic2'
)
when not matched then insert (titi, tata)
values
(magic.titi, 'magic1');
Почему-то я получаю эту ошибку:
ORA-38101: Неверный столбец в предложении INSERT VALUES: "MAGIC". "TITI"
Так что мне было интересно, если это проблема синтаксиса вокруг псевдонимов?Что я там не так сделал?
РЕДАКТИРОВАТЬ : Это ошибка невнимательности, как отметил Джордж Джозеф, я должен использовать unreally_magic
, чтобы она работала, так как когда она не совпадает, я делаюнет строк из magic