我有三个表,并且所有三个表都有相同的请求ID字段。
我正在寻找Sched_G和Sched_I中存在的所有行,但在Sched_P中不存在。
请求ID与所有三个表的主键相同。哪种方式最简单?我尝试使用Join语句但卡住了,并且还有g.primary_key = r.primary_key,但是这会导致没有数据出现。有什么帮助吗?
答案 0 :(得分:1)
这给了你我所有的G
SELECT G.*
FROM G
JOIN I
ON G.Request_id = I.Request_id
现在你想知道哪些不在P
中SELECT G.*
FROM G
JOIN I
ON G.Request_id = I.Request_id
LEFT JOIN P
ON G.Request_id = P.Request_id
WHERE P.Request_id IS NULL
答案 1 :(得分:1)
如果您使用的是Oracle,也可以使用MINUS:
select *
from Sched_G t1 join Sched_I t2 on t1.RequestID= t2.RequestID
minus
select RequestID from Sched_P
答案 2 :(得分:0)
我正在寻找Sched_G和Sched_I
中存在的所有行
做一个INNER JOIN
说
select sg.* from sched_g sg inner join sched_i si
on sg.id = si.id;
然后执行LEFT JOIN
select xxx.*
from (
select sg.* from sched_g sg inner join sched_i si
on sg.id = si.id ) xxx
left join sched_p sp on xxx.id = sp.id
where sp.some_col is null;