我一直在努力左连接一个具有 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 用户数据。
最佳答案
如果您不希望员工的用户数据为 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),所以有些会完全为空的用户数据。
关于mysql - LEFT JOIN 为 NULL 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21567508/