Oracle 中的动态删除
Dynamic delete in Oracle
我有一些静态数据,我正在 union all 的帮助下创建 select 语句,我正在将这些数据与 DB table(部门)进行比较。在减号的帮助下我将获得 DB table 中的额外记录,我需要删除这些记录......需要将现有记录与静态数据同步我希望这将清除要求..
试图在下面的查询中删除 select 查询的结果集我不确定我的错误在哪里.. 得到 SQL 错误:ORA-01732:数据操作操作在此视图上不合法
01732.00000 - "data manipulation operation not legal on this view"
我在这里尝试删除所有与 66,77 不匹配的部门的记录
delete from (select department_id, department_name, manager_id,location_id from departments
minus
(select 66,'Administration',200,1700 from dual
union all
select 77,'Marketing',201,1800 from dual));
delete
s 在表上工作,而不是 select 语句的结果。这里,你只想删除除ID 66和77之外的所有记录:
DELETE FROM departments WHERE id NOT IN (66, 77)
delete departments
where department_id in
(
select department_id
from ( select department_id, department_name, manager_id,location_id
from departments
minus
( select 66,'Administration',200,1700 from dual
union all select 77,'Marketing' ,201,1800 from dual
)
)
)
或
delete departments
where (department_id, department_name, manager_id,location_id) not in
( select 66,'Administration',200,1700 from dual
union all select 77,'Marketing' ,201,1800 from dual
)
但请确保您的 UNION ALL 记录中没有 select null,null,null,null from dual
,否则不会删除任何内容
我有一些静态数据,我正在 union all 的帮助下创建 select 语句,我正在将这些数据与 DB table(部门)进行比较。在减号的帮助下我将获得 DB table 中的额外记录,我需要删除这些记录......需要将现有记录与静态数据同步我希望这将清除要求..
试图在下面的查询中删除 select 查询的结果集我不确定我的错误在哪里.. 得到 SQL 错误:ORA-01732:数据操作操作在此视图上不合法 01732.00000 - "data manipulation operation not legal on this view"
我在这里尝试删除所有与 66,77 不匹配的部门的记录
delete from (select department_id, department_name, manager_id,location_id from departments
minus
(select 66,'Administration',200,1700 from dual
union all
select 77,'Marketing',201,1800 from dual));
delete
s 在表上工作,而不是 select 语句的结果。这里,你只想删除除ID 66和77之外的所有记录:
DELETE FROM departments WHERE id NOT IN (66, 77)
delete departments
where department_id in
(
select department_id
from ( select department_id, department_name, manager_id,location_id
from departments
minus
( select 66,'Administration',200,1700 from dual
union all select 77,'Marketing' ,201,1800 from dual
)
)
)
或
delete departments
where (department_id, department_name, manager_id,location_id) not in
( select 66,'Administration',200,1700 from dual
union all select 77,'Marketing' ,201,1800 from dual
)
但请确保您的 UNION ALL 记录中没有 select null,null,null,null from dual
,否则不会删除任何内容