即使条件不满足,左连接也会返回所有结果

时间:2015-10-07 21:00:36

标签: mysql join left-join

我有一个简单的查询

select * 
from employees as e 
left join email_notification as en 
on e.id=en.eid and en.`status` != 'SUCCESS';

现在我在email_notification表中有一条记录 状态成功但仍然从employee表获取该记录。

3 个答案:

答案 0 :(得分:3)

为什么不尝试使用IN

select * 
from employees as e 
where id not in(
    select eid from email_notification 
    where status != 'SUCCESS'
)

答案 1 :(得分:2)

您希望让员工加入"成功"并选择那些没有的人,如:

SELECT e.* 
FROM employees AS e 
LEFT email_notification AS en 
ON e.id=en.eid and en.`status` = 'SUCCESS'
WHERE en.id IS NULL
;

答案 2 :(得分:1)

我想你的意思是:

select *
from employees as e
left join email_notification as en
on e.id=en.eid
where en.`status` != 'SUCCESS';

我的意思是,status上的检查不应与join一起进行,而是参与最终结果。