笛卡爾積與全連線

尛樣兒發表於2010-01-12

建表:
create table test111 (id number,name varchar2(20));
create table test222 (id number,name varchar2(20));

insert into test111 values(111,'aaa');
insert into test111 values(222,'bbb');
insert into test111 values(444,'ddd');

insert into test222 values(222,'bbb');
insert into test222 values(333,'ccc');
insert into test222 values(444,'eee');
insert into test222 values(444,'fff');
commit;


笛卡爾積
select * from test111,test222;

       111 aaa                         222 bbb
       111 aaa                         333 ccc
       111 aaa                         444 eee
       111 aaa                         444 fff
       222 bbb                         222 bbb
       222 bbb                         333 ccc
       222 bbb                         444 eee
       222 bbb                         444 fff
       444 ddd                         222 bbb
       444 ddd                         333 ccc
       444 ddd                         444 eee
       444 ddd                         444 fff

全連線
select * from test111 full join test222 on test111.id=test222.id;

       222 bbb                         222 bbb
       444 ddd                         444 eee
       444 ddd                         444 fff
       111 aaa                                  
                                               333 ccc 
全連線等同於
select * from test111 inner join test222 on test111.id=test222.id
union all
select * from test111 left join test222 on test111.id=test222.id where test222.id is null
union all
select * from test111 right join test222 on test111.id=test222.id where test111.id is null;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-624978/,如需轉載,請註明出處,否則將追究法律責任。

相關文章