Oracle左右全連線總結

2021-08-30 04:52:43 字數 2800 閱讀 9037

--建立測試資料   

create table a(id number);

create table b(id number);

insert into a values(1);

insert into a values(2);

insert into a values(3);

insert into b values(1);

insert into b values(2);

insert into b values(4);

commit;

--左:

--主流資料庫通用的方法

select * from a left join b on a.id=b.id;

--oracle特有的方法

select * from a, b where a.id=b.id(+);

id id

---------- ----------

1 1

2 2

3

--右:

--主流資料庫通用的方法

select * from a right join b on a.id=b.id;

--oracle特有的方法

select * from a, b where a.id(+)=b.id;

id id

---------- ----------

1 1

2 2

4

--內

--主流資料庫通用的方法

select * from a join b on a.id=b.id;

--where關聯

select * from a, b where a.id=b.id;

id id

---------- ----------

1 1

2 2

--全外

--主流資料庫通用的方法

select * from a full join b on a.id=b.id;

--oracle特有的方法

select *

from a, b

where a.id = b.id(+)

union

select *

from a, b

where a.id(+) = b.id;

id id

---------- ----------

1 1

2 2

3

4

--完全,也叫交叉連線或者笛卡爾積

--主流資料庫通用的方法

select * from a,b;

--或者

select * from a cross join b;

id id

---------- ----------

1 1

1 2

1 4

2 1

2 2

2 4

3 1

3 2

3 4

連線無非是這幾個

--內連線和where相同

inner join

--左向外連線,返回左邊表所有符合條件的

left join

--右向外連線,返回右邊表所有符合條件的

right join

--完整外部連線,左向外連線和右向外連線的合集

full join

--交叉連線,也稱笛卡兒積。返回左表中的每一行與右表中所有行的組合

cross join

--補充:

--左向外連線,返回左邊表所有符合條件的,

--注意這裡沒有第二個加號,會直接過濾掉資料,只顯示符合條件的記錄

select *

from a, b

where a.id = b.id(+)

and b.id = 2;

id id

---------- ----------

2 2

--左向外連線,返回左邊表所有符合條件的

--注意where上第二個加號,它的作用是修改右邊表記錄的顯示,例如如果b.id(+) = 2,顯示為2,否則顯示null

select *

from a, b

where a.id = b.id(+)

and b.id(+) = 2;

id id

---------- ----------

2 2

3

1

Oracle左右全連線總結

建立測試資料 create table a id number create table b id number insert into a values 1 insert into a values 2 insert into a values 3 insert into b values 1 i...

Oracle左右全連線總結

建立測試資料 create table a id number create table b id number insert into a values 1 insert into a values 2 insert into a values 3 insert into b values 1 i...

Oracle左右全連線總結

1.建立測試資料 2.create table a id number 3.create table b id number 4.insert into a values 1 5.insert into a values 2 6.insert into a values 3 7.insert int...