少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          UNION 指令的目的是將兩個 SQL 語句的結(jié)果合并起來,可以查看你要的查詢結(jié)果.

          例如:

          SELECT Date FROM Store_Information
          UNION
          SELECT Date FROM Internet_Sales

          注意:union用法中,兩個select語句的字段類型匹配,而且字段個數(shù)要相同,如上面的例子,在實(shí)際的軟件開發(fā)過程,會遇到更復(fù)雜的情況,具體請看下面的例子

          select  '1' as type,FL_ID,FL_CODE,FL_CNAME,FLDA.FL_PARENTID from FLDA
          WHERE ZT_ID=2006030002
          union 
          select  '2' as type,XM_ID,XM_CODE ,XM_CNAME ,FL_ID from XMDA
          where exists (select * from (select  FL_ID from FLDA WHERE ZT_ID=2006030002 ) a where XMDA.fl_id=a.fl_id)
          order by type,FL_PARENTID ,FL_ID

          這個句子的意思是將兩個sql語句union查詢出來,查詢的條件就是看XMDA表中的FL_ID是否和主表FLDA里的FL_ID值相匹配,(也就是存在).

          UNION在進(jìn)行表鏈接后會篩選掉重復(fù)的記錄,所以在表鏈接后會對所產(chǎn)生的結(jié)果集進(jìn)行排序運(yùn)算,刪除重復(fù)的記錄再返回結(jié)果。

          在查詢中會遇到 UNION ALL,它的用法和union一樣,只不過union含有distinct的功能,它會把兩張表了重復(fù)的記錄去掉,而union all不會,所以從效率上,union all 會高一點(diǎn),但在實(shí)際中用到的并不是很多.

          表頭會用第一個連接塊的字段。。。。。。。。。。

          而UNION ALL只是簡單的將兩個結(jié)果合并后就返回。這樣,如果返回的兩個結(jié)果集中有重復(fù)的數(shù)據(jù),那么返回的結(jié)果集就會包含重復(fù)的數(shù)據(jù)了。

            從效率上說,UNION ALL 要比UNION快很多,所以,如果可以確認(rèn)合并的兩個結(jié)果集中不包含重復(fù)的數(shù)據(jù)的話,那么就使用UNION ALL,如下:

          盡量使用union all,因?yàn)閡nion需要進(jìn)行排序,去除重復(fù)記錄,效率低

          posted on 2012-12-04 23:26 abin 閱讀(390) 評論(0)  編輯  收藏 所屬分類: oracle
          主站蜘蛛池模板: 塘沽区| 永州市| 昌吉市| 吉首市| 札达县| 平潭县| 利津县| 巴塘县| 澄迈县| 轮台县| 奉贤区| 交口县| 乌鲁木齐市| 陆川县| 寿宁县| 手游| 阿瓦提县| 沙湾县| 漯河市| 邯郸县| 丹棱县| 抚顺市| 聂荣县| 浙江省| 西安市| 延寿县| 色达县| 闻喜县| 安阳县| 鹤庆县| 平遥县| 亳州市| 惠州市| 台中县| 新宾| 岳普湖县| 绥中县| 丹东市| 永清县| 丽水市| 奉贤区|