#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');