莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          oracle中的合并查詢

          Posted on 2007-02-11 20:01 dennis 閱讀(4739) 評論(0)  編輯  收藏 所屬分類: 數據庫技術

          為了合并多個select語句的查詢結果,可以使用集合操作符UNION,UNION ALL,INTERSECT和MINUS.語法如下:

          ?

          SELECT語句1? [ UNION?|?UNION?ALL?|?INTERSECT?|?MINUS ] ?SELECT語句2

          ?

          使用集合操作符有以下一些限制:

          .對于LOB,VARRAY,嵌套表類來說,集合操作符無效

          .對于LONG型,UNION ALL,INTERSECT和MINUS無效

          .如果選擇列表包含了表達式,必須指定別名

          1。UNION,用于獲取兩個結果集的并集,會自動去掉結果集中的重復行,并會以第一列的結果進行排序,例:

          ?

          select ? * ? from ?employee? union ? select ? * ? from ?employee;

          ?

          2。UNION ALL,與UNION相似,不同的是UNION ALL不會自動去處重復行,也不會以任何列排序

          ?

          ?? select ? * ? from ?employee? union ? all ? select ? * ? from ?employee;

          ?

          3。INTERSECT,用于獲取兩個結果集的交集,并且以第一列排序,如:

          ?

          select ? * ? from ?employee? intersect ? select ? * ? from ?employee? where ?id = ' 1 ' ;

          ?

          4。MINUS,用于獲取結果集的差集(或者說補集),顯示第一個結果集存在的,第2個結果集不存在的數據:

          ?

          select ? * ? from ?employee?minus? select ? * ? from ?employee? where ?id = ' 1 ' ;

          ?

          注意事項:

          1。兩個選擇列表必須完全一致

          2。可以連續使用集合操作符,這些操作符擁有相同優先級,多個操作符存在時,從左向右執行,如:

          ?

          SQL > ?? select ? * ? from ?employee?minus? select ? * ? from ?employee? where ?id = ' 1 ' ? union ? select ? * ? from ?employee? where ?id = ' 1 ' ;

          ????????ID?NAME???????????SALARY?EMAIL
          -- --------?----------?----------?------------------------------
          ????????? 1 ?love????????????? 3100 ?fasda
          ?????????
          2 ?love????????????? 4100 ?killme2008 @gmail


          ?

          主站蜘蛛池模板: 卫辉市| 县级市| 南漳县| 慈溪市| 太和县| 成都市| 郓城县| 河津市| 钦州市| 弥渡县| 彰化县| 白城市| 宜君县| 临汾市| 滦平县| 盘锦市| 东明县| 望奎县| 哈尔滨市| 建德市| 柘城县| 宜兴市| 邯郸县| 大新县| 东莞市| 建德市| 积石山| 临颍县| 宁乡县| 阿图什市| 隆子县| 呼伦贝尔市| 平湖市| 宁远县| 东乌| 大田县| 临沂市| 尼玛县| 鄂托克前旗| 隆回县| 隆安县|