mysql - LEFT JOIN 为 NULL 条件

标签 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 用户数据。

最佳答案

如果您不希望员工的用户数据为 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/

相关文章:

mysql - 自动增量包括日期

mysql - 如何在 coumn_name 具有逗号分隔值的情况下运行 sql 查询?

mysql - 删除一个表中未被另一个表引用的所有行

sql - 组合多个复杂的 SELECT 语句,使它们出现在一行中

sql-server - SQL Server : delete specific data, 忽略其余部分

mysql - 用mysql订购日期

php - SQLSTATE[42S22] : Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `customer` where `` = 1 limit 1)

sql - 如何在 SQL Server 中随机生成的结果集上添加序列号?

SQL Server : Alter procedure on linked server

php - 将复选框值插入数据库