本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0

          SQL 中JOIN的用法(來自CSDN)

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

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

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

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

          INNER?JOIN 設定兩個表相關聯的運算式,以連接組合兩個表中的字段記錄。 ?

          INNER?JOIN 語法如下: ?

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

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

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

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

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

          在一個 JOIN 表達式中,可以連結多個 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 表達式中,可以為巢狀式: ?

          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 ?


          現在需要查找出兩張表中bID相等的且bID=19的記錄,應該是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條,為什么出這樣的問題,應該怎么做呢? ?
          --------------------------------------------------------------- ?
          ?
          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 ?產生的是笛卡爾積。 ?
          2、union ?會排除重復的記錄 ?
          3、union ?all ?不會排除重復的記錄??
          ?

          ?

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

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

          posted on 2007-03-16 17:04 有貓相伴的日子 閱讀(1178) 評論(0)  編輯  收藏 所屬分類: pl/sql
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 久治县| 巴林右旗| 新田县| 合川市| 如东县| 永善县| 洛宁县| 潼南县| 宁陕县| 天水市| 陆丰市| 山阳县| 定边县| 秀山| 甘谷县| 洛川县| 旬阳县| 潮州市| 金华市| 昌邑市| 图们市| 阳高县| 高清| 铜梁县| 新营市| 仁寿县| 太康县| 靖宇县| 营山县| 丹东市| 英吉沙县| 延津县| 白河县| 长海县| 平武县| 读书| 新泰市| 禄丰县| 秀山| 宁陕县| 五指山市|