Вставить в таблицу значение для строк, извлеченных из предыдущего запроса, если не существует

#sql #oracle #sql-insert

#sql #Oracle #sql-вставить

Вопрос:

У меня есть 2 таблицы, скажем, 'ACCESSENTRY' и PROJECT ., и PROJECT содержит столбцы ROLE, ACCESSENTRY. Мне нужно найти первые строки, в которых ACCESSENTRY равно ‘A’, и для этих строк вставить в ACCESSENTRY новые строки с выбранной ‘РОЛЬЮ‘ и заданным ACCESSENTRY, но если эта строка не существует. Итак, допустим, в этом запросе:

Ответ №1:

Вы можете использовать INSERT ... SELECT с NOT EXISTS :

 insert into UM_ACCESSENTRY(role, accessentry) 
select p.role, 'test' 
from UM_PROJECT p 
where p.PROJECT='ProjectName'
and not exists (
  select 1 from UM_ACCESSENTRY a
  where a.role = p.role and a.accessentry = 'test'
)
  

Ответ №2:

Я думаю, вы хотите not exists :

 insert into ROLEE (role, accessentry) 
    select r.role, 'ACCESS'
    from ROLEE r
    where r.ACCESSENTRY = 'A' and
          not exists (select 1 from rolee r2 where r2.role = r.role and r2.column2 = 'ACCESS');