2017-01-01 62 views
0

我有这个链接两个表的MySQL查询。我想加入主题,从哪里得到不存在的数据从另一个表。我想从两个表中得到不存在的数据

这个在这里得到注册日期为用户

SELECT 
t2.name ,phone 
FROM 
    (SELECT name,tid,date_d,class_time AS 'absent' 
     FROM absent where date_d = '2016-12-04') t1 
JOIN 
    (SELECT name, id,phone AS 'phone' 
     FROM users ) t2 
    ON t1.tid = t2.id 
    group by id 

我想谁没有在表t1从表中的两 注册用户我用同样的上述查询,但像这样的东西ON t1.tid != t2.id它仅适用于不重复的日期

SELECT 
    t2.name ,phone 
    FROM 
     (SELECT name,tid,date_d,class_time AS 'absent' 
      FROM absent where date_d = '2016-12-04') t1 
JOIN 
     (SELECT name, id,phone AS 'phone' 
      FROM users ) t2 
     ON t1.tid != t2.id 
     group by id 
+0

所以你想谁是不存在的缺席用户?奇怪.... :) – barudo

回答

1

像在加入使用ON t1.tid != t2.id的条件将很可能给你一个结果,如果任一t1t2含有较多(因为这样,对于t1t2,tidid中的某些行将会有所不同)。你要找的是“那些在特定日期没有缺席的用户,即没有absent -table存在的记录”,对吧?

尝试以下操作:

SELECT name,id,phone AS 'phone' 
FROM users t2 
WHERE t2.id not in 
    (SELECT tid 
    FROM absent where date_d = '2016-12-04') 
+0

感谢您的帮助 – mester

+0

不客气! –

相关问题