2014-08-27 77 views
0

我使用这些SQL查询来删除行,两个表从两个表中删除:使用一个SQL查询

DELETE FROM AGENT WHERE ID = ? 

DELETE FROM AGENT WHERE AGENT_GROUP_ID = (SELECT ID FROM AGENT_GROUP WHERE NAME = ?) 

我感兴趣我可以以某种方式结合两个SQL查询到一个SQL查询?

回答

4

像这样:

DELETE FROM AGENT 
WHERE ID = ? 
    OR AGENT_GROUP_ID = (SELECT ID FROM AGENT_GROUP WHERE NAME = ? 

?根据docs,您不能同时从多个表中删除记录。作为一个解决方案,你可以写一个存储过程,会从多个表中删除记录,像这样:

create procedure delete_from_multiple_tables (
    p_key1 number 
, p_key2 varchar2 
) 
as 
begin 
    delete table1 where id = p_key1; 
    delete table2 where group_id = p_key2; 
end delete_from_multiple_tables; 
1

是的,你可以..这是相同的表?如果是的话:

DELETE FROM AGENT WHERE AGENT_GROUP_ID = (SELECT ID FROM AGENT_GROUP WHERE NAME = ?) Or ID = ? 

随着不同势表:

DELETE AGENT, MYTABLE2 
FROM AGENT INNER JOIN MYTABLE2 
WHERE AGENT.id = ? OR MYTABLE2.id = (Select ID from ...) 
+0

你的答案是一样的前面的回答,您并没有带来新的想法 – simsim 2014-08-27 08:22:58

+0

不幸的是我使用的是不同的表的SQL查询。 – user1285928 2014-08-27 08:24:55

+0

@simsim jap ..我没有看到zaratustra的答案..在我postet后......哦......太晚了.. :) user1285928:好的..我将我的答案延伸 – 2014-08-27 08:38:24