LEFT JOIN是NULL条件

时间:2014-02-05 02:26:42

标签: mysql sql sql-server left-join

我一直在努力离开加入一个表中有一个IS NULL条件的表。但是查询的结果会获得NULL数据。

SELECT users.id, employees.id as empid, users.activated_at, users.created_at
FROM employees
LEFT JOIN users on users.login = employees.employeeid
WHERE users.activated_at IS NULL
ORDER BY users.created_at ASC

拥有sql语法后,我最终得到了这个查询。我只想获得尚未激活并拥有员工数据的用户。但我总是让员工获得NULL用户数据。

2 个答案:

答案 0 :(得分:2)

如果您不希望员工拥有NULL用户数据,则需要执行INNER JOIN

SELECT users.id, 
       employees.id AS empid, 
       users.activated_at, 
       users.created_at 
FROM   employees 
       INNER JOIN users 
               ON users.login = employees.employeeid 
WHERE  users.activated_at IS NULL 
ORDER  BY users.created_at ASC 

INNER JOIN将排除两个表中不存在的记录。因此,任何没有用户数据的员工都将被排除在外。 LEFT JOIN是不同的,因为它将返回第一个表(员工)中的所有匹配记录,无论它们是否与用户匹配(在这些情况下WHERE条件仍然为TRUE),因此一些将具有完全NULL用户数据

答案 1 :(得分:0)

您的SQL似乎对我有用:(http://sqlfiddle.com/#!6/0a8ac/1