posts - 110, comments - 101, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          數據庫版本:Oracle 9i

          TESTA,TESTB,TESTC,各有A, B兩列

          A

          B

          001

          10A

          002

          20A

          A

          B

          001

          10B

          003

          30B

          A

          B

          001

          10C

          004

          40C

          連接分為兩種:內連接與外連接。

          A.內連接

          內連接,即最常見的等值連接,例:

          SELECT * 
          FROM TESTA,TESTB
          WHERE TESTA.A=TESTB.A


          結果

          A

          B

          A

          B

          001

          10A

          001

          10B

          B.外連接

          外連接分為左外連接,右外連接和全外連接。

          1.  左外連接 left outer join 或者 left join

          左外連接就是在等值連接的基礎上加上主表中的未匹配數據,例:

          SELECT *
          FROM TESTA 
          LEFT OUTER JOIN TESTB 
          ON TESTA.A=TESTB.A

          Oracle 支持另一種寫法

          SELECT * 
          FROM TESTA,TESTB
          WHERE TESTA.A=TESTB.A(+)

          結果:

          A

          B

          A

          B

          001

          10A

          001

          10B

          002

          20A

          三個表做左外連接

          SELECT *
          FROM TESTA 
          LEFT OUTER JOIN TESTB 
          ON TESTA.A=TESTB.A
          LEFT OUTER JOIN TESTC
          ON TESTA.A=TESTC.A

          Oracle 支持的另外一種寫法

          SELECT *
          FROM TESTA,TESTB,TESTC
          WHERE TESTA.A=TESTB.A(+)
          AND TESTA.A=TESTC.A(+)

          結果:

          A

          B

          A

          B

          A

          B

          001

          10A

          001

          10B

          001

          10C

          002

          20A

          2. 右外連接 right outer join 或者 right join

          右外連接是在等值連接的基礎上加上被連接表的不匹配數據

          SELECT *
          FROM TESTA 
          RIGHT OUTER JOIN TESTB 
          ON TESTA.A=TESTB.A

          Oracle支持的另一種寫法

          SELECT *
          FROM TESTA,TESTB
          WHERE TESTA.A(+)=TESTB.A

          結果:

          A

          B

          A

          B

          001

          10A

          001

          10B

          003

          30B

          3.全外連接 full outer join 或者 full join

          全外連接是在等值連接的基礎上將左表和右表的未匹配數據都加上

          SELECT * 
          FROM TESTA 
          FULL OUTER JOIN TESTB
          ON TESTA.A=TESTB.A

          全外連接的等價寫法,對同一表先做左連接,然后右連接

          SELECT  TESTA.*,TESTB.*
          FROM TESTA
          LEFT OUTER JOIN TESTB
          ON TESTA.A=TESTB.A
          UNION
          SELECT TESTA.*,TESTB.*
          FROM TESTB
          LEFT OUTER JOIN TESTA
          ON TESTA.A=TESTB.A

          結果:

          A

          B

          A

          B

          001

          10A

          001

          10B

          002

          20A

          003

          30B



          評論

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2013-08-16 10:54 by 設計大師 小林
          O(∩_∩)O謝謝

          # re: Oracle內連接、外連接、右外連接、全外連接小總結[未登錄]  回復  更多評論   

          2013-12-05 19:12 by xxx
          好文

          # re: Oracle內連接、外連接、右外連接、全外連接小總結[未登錄]  回復  更多評論   

          2014-01-08 14:40 by 小歐
          不會做哪些不和發的http://www.51fsk.com/(富士康直招網) http://www.huigongzuo.com/

          http://www.luwuyou.com/ http://www.peixunt.com/ http://www.yuwomen.com/

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2014-03-10 16:56 by Cxb
          很清晰易懂,謝謝

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2014-03-13 23:06 by okok
          謝謝分享,不是很深入,但看完也算基本入門了。謝謝!

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2014-04-08 16:23 by sd
          很詳細

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2015-03-18 16:40 by nir
          很清晰

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2015-03-19 16:30 by 非客
          文章不錯

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2015-05-26 15:06 by 苗利國
          簡單易懂 清晰明了

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2015-06-06 16:06 by 111111111
          寫的讓我一下子就懂了

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2015-11-24 13:23 by 小夜醬
          受用了

          # re: Oracle內連接、外連接、右外連接、全外連接小總結  回復  更多評論   

          2016-04-18 17:55 by q
          q

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 杨浦区| 忻州市| 松阳县| 彰化县| 温宿县| 广东省| 石柱| 文登市| 丰镇市| 巩留县| 齐齐哈尔市| 芷江| 运城市| 乌拉特前旗| 临沧市| 固原市| 石屏县| 荃湾区| 洛隆县| 德阳市| 措勤县| 华容县| 商丘市| 石台县| 松原市| 玉屏| 贡嘎县| 广饶县| 新巴尔虎左旗| 泰来县| 聂荣县| 临邑县| 双鸭山市| 河东区| 巴东县| 广安市| 岳普湖县| 绥棱县| 江津市| 博乐市| 遵化市|