本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          隨筆-230  評論-230  文章-8  trackbacks-0

          SQL 中JOIN的用法(來自CSDN)

          JOIN 連接組合兩個表中的字段記錄,包括三種: ?

          INNER?JOIN 運算式:連接組合兩個表中的字段記錄。 ?

          LEFT?JOIN 運算式:連接組合兩個表中的字段記錄,并將包含了 LEFT?JOIN 左邊表中的全部記錄。 ?

          RIGHT?JOIN 運算式:連接組合兩個表中的字段記錄,并將包含了 RIGHT?JOIN 右邊表中的全部記錄。 ?

          INNER?JOIN 設(shè)定兩個表相關(guān)聯(lián)的運算式,以連接組合兩個表中的字段記錄。 ?

          INNER?JOIN 語法如下: ?

          FROM? 1?INNER?JOIN? 2?ON? 1. 字段 1? 比較運算子 ? 2. 字段 2?

          兩個表連接的字段,譬如 ?[ 1. 字段 1= 2. 字段 2] ,必須具有相同的字段類型,但是字段名稱不需要相同。 ?

          例如,自動編號字段類型可以連接 Long? 的字段類型,但是單精整數(shù)字段類型不能連接雙精整數(shù)的字段類型。 ?

          比較運算子可為 = 、 < 、 > <= 、 >= 、或 <> 。 ?

          JOIN 連接的字段,不可以包含 MEMO 字段類型或 OLE 對象類型,否則會發(fā)生錯誤。 ?

          在一個 JOIN 表達(dá)式中,可以連結(jié)多個 ON 子句: ?

          SELECT?fields?
          FROM?
          1?INNER?JOIN? 2?
          ON?
          1. 字段 1? 比較運算子 ? 2. 字段 1?AND?
          ON?
          1. 字段 2? 比較運算子 ? 2. 字段 2)?OR?
          ON?
          1. 字段 3? 比較運算子 ? 2. 字段 3)?

          JOIN 表達(dá)式中,可以為巢狀式: ?

          SELECT?fields?
          FROM?
          1?INNER?JOIN?
          (
          2?INNER?JOIN?[(?] 3?
          [INNER?JOIN?[(?]?
          x?[INNER?JOIN?...)]?
          ON?
          3. 字段 3? 比較運算子 ? x. 字段 x)]?
          ON?
          2. 字段 2? 比較運算子 ? 3. 字段 3)?
          ON?
          1. 字段 1? 比較運算子 ? 2. 字段 2?

          在一個 INNER?JOIN 中,可以包括巢狀式的 LEFT?JOIN RIGHT?JOIN ,但是在一個 LEFT?JOIN RIGHT?JOIN 中不能包括巢狀式的 INNER?JOIN 。 ?


          ==================================================
          看一下一個查詢的問題 ?
          我有兩張表 ?
          tab1 ?
          ? ? ? ?字段 ?
          ? ? ? ?aID ?
          ? ? ? ?bID ?
          ?
          tab2 ?
          ? ? ? ?字段 ?
          ? ? ? ?aID ?
          ? ? ? ?bID ?


          tab1中有記錄: ?
          aID ? ?bID ?
          as1 ? ?19 ?
          as2 ? ?19 ?
          as3 ? ?23 ?
          as4 ? ?45 ?
          tab2中有記錄: ?
          aID ? ?bID ?
          as2 ? ?19 ?
          as3 ? ?19 ?
          as4 ? ?19 ?


          現(xiàn)在需要查找出兩張表中bID相等的且bID=19的記錄,應(yīng)該是5條記錄 ?
          我用的方法是: ?
          方法1:select ?tab1.aID,tab2.aID ?from ?tab1,tab2 ?where ?tab1.bID=tab2.bID ?and ?tab2.bID=19 ?
          方法2:select ?tab1.aID,tab2.aID ?from ?tab1 ?join ?tab2 ?on ?tab1.bID=tab2.bID ?where ?tab1.bID=19 ?
          上面兩中方法選出的記錄都是6條,為什么出這樣的問題,應(yīng)該怎么做呢? ?
          --------------------------------------------------------------- ?
          ?
          select ?* ?form ?tab1 ?where ?bID=19 ?
          union ?all ? ?
          select ?* ?form ?tab2 ?where ?bID=19 ?
          ?
          ?
          --------------------------------------------------------------- ?
          ?
          create ?table ?tab1 ?
          ? ? ? ?(aID ?char(10), ?
          ? ? ? ?bID ?char(10)) ?
          go ?
          ?
          insert ?into ?tab1(aid,bid) ?values('as1','19') ?
          insert ?tab1 ?values('as2','19') ?
          insert ?tab1 ?values('as3','38') ?
          insert ?tab1 ?values('as4','45') ?
          go ?
          create ?table ?tab2 ?
          ? ? ? ?(aID ?char(10), ?
          ? ? ? ?bID ?char(10)) ?
          go ?
          go ?
          insert ?tab2 ?values('as2','19') ?
          insert ?tab2 ?values('as3','19') ?
          insert ?tab2 ?values('as4','19') ?
          go ?
          select ?* ?from ?tab1 ?
          ?
          select ?* ?from ?tab1 ?where ?tab1.bid='19'union ?all ?select ?* ?from ?tab2 ? ?where ?tab2.bid='19' ?
          ?
          ?
          斑竹加的話: ?
          1、join ?產(chǎn)生的是笛卡爾積。 ?
          2、union ?會排除重復(fù)的記錄 ?
          3、union ?all ?不會排除重復(fù)的記錄??
          ?

          ?

          union子句
          union操作符將兩個查詢結(jié)果合并為一個結(jié)果集。為連接查詢合并兩個表時:列的數(shù)日和順序在查中必須一致;數(shù)據(jù)類型兼容
          語法:
          select ?語句
          union ? [ all ]
          select ?語句
          注意:
          1 .union運算從最終結(jié)果集中刪除重復(fù)記錄,如想不刪除重復(fù)記錄使用all關(guān)鍵字
          2 .第一個select語句中不能用order?by或compute子句,只能是最后一個select語名后用

          例:查詢計算機系的學(xué)生式年齡不大于19歲的學(xué)習(xí),按年齡倒排序
          select ? * ? from ?department? where ?dept = ' computer ' ;
          union ;
          ?select?
          * ? from ?student? where ?age <= 19
          order ? by ?age? desc

          posted on 2007-03-16 17:04 有貓相伴的日子 閱讀(1179) 評論(0)  編輯  收藏 所屬分類: pl/sql
          本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          主站蜘蛛池模板: 介休市| 新竹县| 孝感市| 鄯善县| 凯里市| 普陀区| 邵武市| 盘锦市| 黄浦区| 溧水县| 竹山县| 特克斯县| 彭阳县| 湖口县| 丘北县| 宁夏| 巫山县| 囊谦县| 河源市| 溆浦县| 长泰县| 盱眙县| 门头沟区| 贵南县| 忻城县| 抚州市| 文安县| 开封市| 台南县| 县级市| 江西省| 普兰县| 彩票| 东兰县| 海门市| 五莲县| 宾阳县| 会理县| 乌恰县| 西吉县| 曲麻莱县|