Sql 连接具有相同类型连接的两个查询

Sql 连接具有相同类型连接的两个查询,sql,oracle,Sql,Oracle,我有两个问题。两者仅在一个联接条件上不同。有没有办法让它成为一个单一的查询。下面是查询 第一个问题: delete from Employee where Employee_ID in ( select PK from Dept inner join Tran on Tran.PK = Dept.TX_ID inner join TASK on TASK.TRANSINFO = TRAN.PK_ID inn

我有两个问题。两者仅在一个联接条件上不同。有没有办法让它成为一个单一的查询。下面是查询

第一个问题:

delete from Employee where Employee_ID in    
  (    
    select PK from Dept    
     inner join Tran on Tran.PK = Dept.TX_ID   
        inner join TASK on TASK.TRANSINFO = TRAN.PK_ID   
        inner join TASK1 on TASK.PT_ID = TASK1.PK_ID  
           inner join TASKSUB on TASKSUB.PK_ID = TASK1.SUBJECT   
  where TASKSUB. PK1 in (select id  from tmp) and TASKSUB.REF= ‘Shopping’
  );
第二个问题:

    delete from Employee where Employee_ID in   
      (   
  select PK from Dept   
    inner join Tran on Tran.PK = Dept.TX_ID   
     inner join TASK on TASK.TRANSINFO = TRAN.PK_ID   
      inner join TASK1 on TASK.PT_ID = TASK1.PK_ID   
         inner join TASKSUB on TASKSUB.PK_ID = TASK1.SUBJECT   
  where TASKSUB. PK1 in (select id1  from tmp) and TASKSUB.REF= ‘Shopping’   
  );
唯一的区别是tmp表中的id和id1


提前感谢

可能在id和id1的子选择中使用
联合
。差不多

select id from table1 
union 
select id1 from table1
试试这个:

delete from Employee where Employee_ID in    
(    
    select PK from Dept    
    inner join Tran on Tran.PK = Dept.TX_ID   
    inner join TASK on TASK.TRANSINFO = TRAN.PK_ID   
    inner join TASK1 on TASK.PT_ID = TASK1.PK_ID  
    inner join TASKSUB on TASKSUB.PK_ID = TASK1.SUBJECT   
    where TASKSUB. PK1 in (select id  from tmp) and TASKSUB.REF= ‘Shopping’

    union

    select PK from Dept   
    inner join Tran on Tran.PK = Dept.TX_ID   
    inner join TASK on TASK.TRANSINFO = TRAN.PK_ID   
    inner join TASK1 on TASK.PT_ID = TASK1.PK_ID   
        inner join TASKSUB on TASKSUB.PK_ID = TASK1.SUBJECT   
    where TASKSUB. PK1 in (select id1  from tmp) and TASKSUB.REF= ‘Shopping’
  );
这个怎么样

where EXISTS (
        select 1 from tmp 
        where TASKSUB.PK1 = tmp.id or TASKSUB.PK1 = tmp.id1
    ) and 
    TASKSUB.REF= ‘Shopping’  
delete from Employee where Employee_ID in    
(    
select PK from Dept    
 inner join Tran on Tran.PK = Dept.TX_ID   
    inner join TASK on TASK.TRANSINFO = TRAN.PK_ID   
    inner join TASK1 on TASK.PT_ID = TASK1.PK_ID  
       inner join TASKSUB on TASKSUB.PK_ID = TASK1.SUBJECT   
where TASKSUB. PK1 in (select id from tmp union all select id1 from tmp) and TASKSUB.REF= ‘Shopping’
)