oracle左外連線和右外連線的區別
阿新 • • 發佈:2022-03-07
準備測試資料
create table T_A ( a_id NUMBER, a_name VARCHAR2(10) ); create table T_B ( b_id NUMBER, b_name VARCHAR2(10) ); insert into t_b (B_ID, B_NAME) values ('1', 'AA'); insert into t_b (B_ID, B_NAME) values ('1', 'AB'); insert into t_b (B_ID, B_NAME) values ('2', 'BB'); insert into t_b (B_ID, B_NAME) values('4', 'DD'); insert into t_a (A_ID, A_NAME) values ('1', 'A'); insert into t_a (A_ID, A_NAME) values ('2', 'B'); insert into t_a (A_ID, A_NAME) values ('3', 'C'); commit;
示例中t_A看成左表,t_B看成右表
左外連線:t_A的資料都顯示,加上t_A和t_B匹配後的資料,t_B表不足的地方均為NULL。
Select a.*,b.* from t_A a,t_B b where a.A_id=b.b_id(+) orderby a.a_id; select a.*,b.* from t_A a left join t_B b on a.A_id = b.b_id order by a.a_id;
右外連線,t_B的資料都顯示,加上t_A和t_B匹配後的資料。 t_A表不足的地方均為NULL。
Select a.*,b.* from t_A a,t_B b where a.a_id(+)=b.b_id order by a.a_id; select a.*,b.* from t_A a right join t_B b on a.a_id = b.b_id order by a.a_id;
簡單的理解為:
(+)在右,是左外連線。左表的資料全展示
(+)在左,是右外連線。右表的資料全展示