簡體   English   中英

右聯接不會返回右側表中的所有記錄

[英]Right Join does not return all the records from right side table

我有兩張桌子

表1:資產詳細信息:itm_id,itm_slno,itm_desc ..

表2:itmtype:typ_id,typname,..

表2包含6個不同的typname。

但是,當我使用右連接時,它僅返回4條記錄。

在此處輸入圖片說明

我的查詢是:

SELECT a.itm_id,i.typname,a.itm_slno,a.itm_desc,a.itm_class from assetdetail
a right join itmtype i on i.typ_id=a.typ_id where a.itm_id!='234'
and itm_class='XYZ' group by i.typname

我需要在聯接查詢中獲取所有6個typename記錄。查詢出了什么問題?

right join第一個表上的條件需要放入on子句,而不是where子句:

SELECT a.itm_id, i.typname, a.itm_slno, a.itm_desc, a.itm_class
from assetdetail a right join
     itmtype i
     on i.typ_id = a.typ_id and a.itm_id <> '234' and a.itm_class = 'XYZ'
group by i.typname;

第一個表中的不匹配行具有NULL值,這會使where的比較失敗。

但是,我將其寫為left join 大多數人發現邏輯更容易遵循:將所有行都保留在第一個表中,無論是否存在匹配項:

SELECT a.itm_id, i.typname, a.itm_slno, a.itm_desc, a.itm_class
from itmtype i left join
     assetdetail a 
     on i.typ_id = a.typ_id and a.itm_id <> '234' and a.itm_class = 'XYZ'
group by i.typname;

條件保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM