MySQL连接忽略空值

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

我有以下带有联接的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

然后它提供了我需要的所有用户。某些用户没有设置组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