你能帮我问一下吗?
在我的数据库里,我有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中的一些记录
2条答案
按热度按时间nle07wnf1#
我怀疑您只需要合并表2和表3,并留下连接表1的空值测试
ni65a41a2#
如果在所有表中有一个公共键
(id, lname, fname, mname)
下面就行了。如果您的常用键有所不同,请调整WHERE
两个子查询中的子句只包含公共键(列)。使用
EXISTS
包括表3中的记录和NOT EXISTS
排除表2中的记录: