0
我有以下查询重用选择查询结果的Oracle
SELECT ID FROM MARMELADES mrm
where not exists
(SELECT 1 FROM TOYS toys
WHERE mrm.ID = toys.ID
AND mrm.INGREDIENT = toys.INGREDIENT
AND mrm.BOX_TYPE = 2)
AND mrm.BOX_TYPE = 2
它返回几乎400多个ID的结果,例如[12, 33, 45, ... , 3405]
现在,我想删除这是从所有的IDS从我的数据库到处列出。这不仅是MARMELADES和玩具。此外,我有例如35 +表,我可以有这个ID)。
我会很高兴,如果这种查询可以像ALL_UNNEEDED_IDS一些功能提取这样我就可以这样使用它:
DELETE FROM ANOTHER_TABLE_1 WHERE ID IN (ALL_UNNEEDED_IDS)
DELETE FROM ANOTHER_TABLE_2 WHERE ID IN (ALL_UNNEEDED_IDS)
DELETE FROM ANOTHER_TABLE_3 WHERE ID IN (ALL_UNNEEDED_IDS)
DELETE FROM ANOTHER_TABLE_4 WHERE ID IN (ALL_UNNEEDED_IDS)
...
DELETE FROM ANOTHER_TABLE_35 WHERE ID IN (ALL_UNNEEDED_IDS)
这是可以做到在Oracle重用这样的结果?
创建一个临时表并在其中存储不需要的ID。 –
如果所有这些表都通过此ID作为FK进行关联,听起来像您应该将它们配置为级联删除。否则,将查询结果插入临时表中,然后从所有删除调用中引用该查询结果。 – OldProgrammer
看看这个: http://stackoverflow.com/questions/9119465/how-to-reuse-a-large-query-without-repeating-it –