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’
)