使用JOIN查询时包含空行

时间:2015-03-16 11:25:20

标签: mysql sql

假设我有两个表:FRUITSUSERS

fruits
-------------
id | name   |
-------------
1  | Apple  |
2  | Orange |
3  | Pear   |
-------------

users
-------------------
id | name | fruit |
-------------------
1  | John | 3     |
2  | Bob  | 2     |
3  | Adam | 1     |
-------------------

我使用以下查询(在this question中回答)来查询具有正确水果名称的用户,而不仅仅是水果ID

SELECT u.id, u.name, f.name FROM users u JOIN fruits f ON u.fruit = f.id

但是,上述查询仅返回具有有效水果ID的用户。如何修改此查询以返回包含无效/空果实ID的用户?这样水果名称应为NULL

4 个答案:

答案 0 :(得分:2)

使用left join

SELECT 
u.id, 
u.name, 
f.name 
FROM users u  
LEFT JOIN fruits f ON u.fruit = f.id

答案 1 :(得分:2)

您可以使用left join

SELECT u.id, u.name, f.name
FROM users u LEFT JOIN
     fruits f
     ON u.fruit = f.id;

这将保留users表中的所有行,即使是fruits中包含不匹配值的行。

答案 2 :(得分:2)

使用'LEFT JOIN':

  

选择       u.id       ,u.name       ,f.name FROM       用户你       LEFT JOIN fruit f ON u.fruit = f.id

答案 3 :(得分:2)

SELECT u.id, u.name, f.name FROM users u 
LEFT JOIN fruits f ON u.fruit = f.id

了解LEFT JOIN here