莊周夢蝶

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

          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??梢赃B續使用集合操作符,這些操作符擁有相同優先級,多個操作符存在時,從左向右執行,如:

          ?

          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


          ?

          主站蜘蛛池模板: 德庆县| 太仓市| 安福县| 体育| 广宁县| 嵊州市| 通辽市| 绥宁县| 辽中县| 平塘县| 乾安县| 佛冈县| 康马县| 萝北县| 阜南县| 和龙市| 姜堰市| 仙居县| 梨树县| 永年县| 吴旗县| 呈贡县| 蓬莱市| 怀仁县| 宣汉县| 威海市| 平山县| 秭归县| 抚顺市| 新密市| 平凉市| 泰顺县| 论坛| 政和县| 东丽区| 宜昌市| 汝城县| 甘肃省| 镇雄县| 凤翔县| 永仁县|