您能帮我查询一下吗?
在我的数据库中,我有3个表,
Table 1 - Student Master List (9 Records)
Table 2 - AM (4 Records)
Table 3 - PM (3 Records)
表2和表3具有相同的结构,但是无论如何,表2的优先级都比表3
我想查看表1中不在表2中的记录,但表3中有记录。表2(4)+表3(3)= 7条记录
但是如何显示主列表中的2条记录
示例数据库
我的查询是这样的:
select * from table1 t1
where (id, lname, fname, mname) NOT IN
(select id, lname, fname, mname from table2) and
(id, lname, fname, mname) IN
(select id, lname, fname, mname from table3)
但是当我这样做时,它只显示了表2和表3中的一些记录
答案 0 :(得分:1)
如果所有表之间都有一个公用键,则下面的(id, lname, fname, mname)
将起作用。如果您的公用密钥有所不同,请调整两个子查询中的WHERE
子句,使其仅包括公用密钥(列)。
使用EXISTS
包含表3中的记录,并使用NOT EXISTS
排除表2中的记录:
select *
from table1 t1
where
not exists (
select 1
from table2 t2
where t1.id = t2.id and t1.lname = t2.lname and t1.fname = t2.fname and t1.mname = t2.mname)
and exists (
select 1
from table3 t3
where t1.id = t3.id and t1.lname = t3.lname and t1.fname = t3.fname and t1.mname = t3.mname)
答案 1 :(得分:0)
我怀疑您只需要合并表2和3并离开连接表1来测试空值
[\[link-text\]](http://example.com/)