具有null值的sql一对一关系



我有两个一对一关系的表,比如:people与状态表有一对一的关系

**people table**
ID  Name    Status
1   Mick    1
2   Rohit   null
3   Virat   1
4   Viru    null
5   Gilly   2
6   Shann   null
7   Mitch   3
**status table**
ID  Status 
1   started
2   not-started
3   pending
4   waiting

我需要让那些有身份的人;空";以及";"启动";(来自前男友:米克、罗希特、维拉特、维鲁、沙恩(。

我尝试了SQL查询

select p.id, p.name
from people p
inner join status s on s.id = p.status
where (s.name IS NULL OR s.name = 'started')

这是只给出具有关系的名称,我的意思是";Mick,Virat";(跳过null(。

我不知道我在这里错过了什么。提前感谢

为了在没有status匹配的情况下保留people记录,您需要OUTER联接。在这种情况下,LEFT OUTER JOIN,通常缩短为仅LEFT JOIN:

select p.id, p.name 
from people p 
left join status s on s.id = p.status
where coalesce(s.name, 'started') = 'started'

最新更新