MySQL连接忽略空值
我有以下带有联接的SQL,如果我运行它,它将忽略在users表的group_id中具有空值的记录。因此,我得到的结果较少MySQL连接忽略空值,mysql,Mysql,我有以下带有联接的SQL,如果我运行它,它将忽略在users表的group_id中具有空值的记录。因此,我得到的结果较少 SELECT u.user_id, u.email, g.group_name FROM users u JOIN groups g USING (group_id) WHERE u.year=2017 但是,如果我在没有连接的情况下运行它,如下所示: SELECT u.user_id, u.email FROM users u WHERE u.year=2017
SELECT u.user_id, u.email, g.group_name
FROM users u
JOIN groups g USING (group_id)
WHERE u.year=2017
但是,如果我在没有连接的情况下运行它,如下所示:
SELECT u.user_id, u.email
FROM users u
WHERE u.year=2017
然后它提供了我需要的所有用户。某些用户没有设置组id,因为这不是必填字段。有没有一种方法也可以连接空值?我需要在groups表中有一个空值吗?这是不可能的,因为groups表中的my group_id字段不为NULL,并且主键必须使用
LEFT JOIN
:
SELECT u.user_id, u.email, g.group_name
FROM users u
LEFT JOIN groups g USING (group_id)
WHERE u.year=2017
如果要获取所有用户,无论他们是否具有组id,请使用“左联接”
SELECT u.user_id, u.email, g.group_name
FROM users u
LEFT JOIN groups g USING (group_id)
WHERE u.year=2017
或者使用您的版本调整on子句
SELECT u.user_id, u.email, g.group_name
FROM users u
JOIN groups g ON(u.group_id = g.group_id OR u.group_id IS NULL)
WHERE u.year=2017