[英]Is there a way to perform this inner join in sql?
我有兩個表的sql數據庫。 第一個表被命名為Workers,具有以下列:id,name和包括值:
1, Mark
2, David
3, Peter
第二個名為WorkingHours,其名稱為:id,小時,日期,並包含值:
1, 5, '2019-07-20'
1, 4, '2019-07-21'
3, 6, '2019-07-10'
3, 4, '2019-07-20'
我想進行查詢以顯示``2019-07-20''的視圖,如下所示:
id name hours
1 Mark 5
2 David
3 Peter 4
如果我的查詢是:
SELECT W.*, H.hours
FROM Workers W
INNER JOIN WorkingHours H ON W.id = H.id
WHERE H.date = '2019-07-20'
我不會得到大衛。 我怎么也能得到他?
您需要使用left join
和coalesce()
來為'2019-07-20'上沒有時間的工人獲得0小時
SELECT W.*, coalesce(H.hours, 0) hours
FROM Workers W
LEFT JOIN WorkingHours H ON W.id = H.id AND H.date = '2019-07-20'
如果不希望為0,請使用H.hours
而不是coalesce(H.hours, 0)
,它將返回null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.