我想从两个表中得到不存在的数据

时间:2017-01-01 21:54:30

标签: mysql

我有这个链接两个表的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

我希望表2中没有在表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

1 个答案:

答案 0 :(得分:1)

如果ON t1.tid != t2.idt1包含多行,那么联接中使用的条件t2很可能会给您一个结果(因为那时,对于某些行, t1t2tidid会有所不同。您正在寻找的是"那些在特定日期没有缺席的用户,即absent - 表中没有条目 - 表格存在",对吗?

尝试以下方法:

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