MySQL-1个主列表表不是IN表2而是IN表3

时间:2018-07-16 07:56:28

标签: mysql sql

您能帮我查询一下吗?

在我的数据库中,我有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 个答案:

答案 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/)