我有兩個具有一對一關系的表,例如: 人們與狀態表具有一對一的關系
**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
我需要讓狀態為“null”和“started”的人(例如:Mick、Rohit、Virat、Viru、Shann)。
我嘗試使用 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”(跳過空值)有關系的名稱。
我不知道我在這里錯過了什么。提前致謝
uj5u.com熱心網友回復:
為了保留people沒有匹配項的記錄,status您需要OUTER加入。在這種情況下, a 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'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439659.html
上一篇:我的帶有子查詢的查詢不會回傳空集
