我有两个一对一关系的表,比如: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'