我一直在努力离开加入一个表中有一个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用户数据。
答案 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)