很多人認為inner join 和left join 很簡單,但是在實際的業務數據生成中,就會出現重復數據;還是淺談一下;
inner join (內連接):假如A表和B表做內連接操作:實際效果是取出兩者的公共部分數據;
create table TEST1 ( bm_id VARCHAR2(18) ); -- Create table create table TEST2 ( khh VARCHAR2(18), khxm VARCHAR2(50), xb CHAR(1), bm_id VARCHAR2(50) ); select t.*, '<>', a.* from TEST1 T INNER JOIN TEST2 A ON A.Bm_Id = T.Bm_Id;
查詢的結果如下圖:(會發現有2條數據,如果要取某些字段作為最后的數據,記得要用關鍵字distinct 去重,不然就產生重復數據、處理起來很麻煩)
left join (左連接):假如A表和B表做左連接操作:實際效果是取出以A表為基礎的和B表的公共部分,A表的數據會全部查詢出來;
實際效果如下圖:在實際業務中,需求邏輯有取出新增的數據,如圖我們就可以取出新增的數據;
小結:雖然inner join 和left join 很簡單,但是在實際應用中是很靈活的,在處理實際業務中,一定要清楚邏輯;