从右表中获取具有空值的行

时间:2017-02-13 21:47:42

标签: mysql

如果在右侧

中不存在,我怎么能得到空值?

我所拥有的是两个表格contract_type

ID  |   name    
    |
1   |   full-time
2   |   half-time
3   |   volunteer
4   |   freelancer

,第二个表是contract_type和员工
之间的关系 表的名称是contract

ID  |      employee_id   |  contract_type_id  
    |                    |   
1   |          31         |       1
2   |          31         |       2    
3   |          31         |       4    
4   |          45         |       3    

现在我需要结果与contract_type表相同,如果存在,则表示新列

我试过这个

select * from contract_type left join `contract` on contract_type.ID  = contract.contract_type_id  where employee_id   = 31 

现在的问题是结果只有三个记录,但我希望至少得到像

这样的东西
ID  |      name        |  contract_type_id  
    |                  |   
1   |     full-time    |       31
2   |     half-time    |       31         
3   |     volunteer    |       null
4   |     freelancer   |       31

或者

ID  |      name        |       status
    |                  |   
1   |     full-time    |       true
2   |     half-time    |       true
3   |     volunteer    |       false
4   |     freelancer   |       true

1 个答案:

答案 0 :(得分:2)

将您的ID检查移至JOIN条件,而不是WHERE

select *
  from contract_type
  left join `contract` on contract_type.ID  = contract.contract_type_id
   and employee_id = 31;