1. 程式人生 > 其它 >oracle左外連線和右外連線的區別

oracle左外連線和右外連線的區別

準備測試資料

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(+) order
by 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;

簡單的理解為:
(+)在右,是左外連線。左表的資料全展示
(+)在左,是右外連線。右表的資料全展示

開源改變生活