MySQL JOIN忽略NULL值

时间:2017-11-20 21:41:49

标签: mysql

我有一个JOIN的SQL,如果我运行它,它会忽略users表中group_id中具有NULL值的记录。因此,我得到的结果较少

SELECT u.user_id, u.email, g.group_name 
FROM users u 
JOIN groups g USING (group_id) 
WHERE u.year=2017

但是,如果我在没有JOIN的情况下运行它:

SELECT u.user_id, u.email 
FROM users u 
WHERE u.year=2017

然后它给了我需要的所有用户。某些用户没有设置group_id,因为这不是必填字段。有没有办法加入NULL值呢?我是否需要在groups表中使用NULL值?这是不可能的,因为groups表中的group_id字段是NOT NULL和PRIMARY KEY

2 个答案:

答案 0 :(得分:5)

您必须使用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

答案 1 :(得分:1)

如果您想让所有用户获得group_id

,请使用左连接
SELECT u.user_id, u.email, g.group_name 
FROM users u 
LEFT JOIN groups g USING (group_id) 
WHERE u.year=2017

或使用您的版本调整条款

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