我有这个链接两个表的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
答案 0 :(得分:1)
如果ON t1.tid != t2.id
或t1
包含多行,那么联接中使用的条件t2
很可能会给您一个结果(因为那时,对于某些行, t1
和t2
,tid
和id
会有所不同。您正在寻找的是"那些在特定日期没有缺席的用户,即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')