Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          公告

          話到七分,酒至微醺,筆墨疏宕,言詞婉約,古樸殘破,含蓄醞籍,就是不完而美之最高境界。

          常用鏈接

          留言簿(13)

          隨筆分類(397)

          隨筆檔案(397)

          文章分類(33)

          新聞分類(15)

          收藏夾(74)

          Blog_List

          IT_Web

          My_Link

          最新隨筆

          最新評論

          Distinct函數的替代方法
          ?
          ?
          ??? 今天在論壇上看到一個面試題,是說有什么辦法可以替代distinct,得到同樣的結果。答案都被大家說的差不多了,發現挺有意思的,就記錄一下:

          SQL> select num from t1;

          ?????? NUM
          ----------
          ???????? 6
          ???????? 6
          ???????? 7
          ???????? 8
          ???????? 9
          ???????? 1
          ???????? 1
          ???????? 1
          ?????? 1
          ??????? 1
          ???????? 1
          ???????? 1
          ???? ?? 1
          ??? ???? 1
          ??????? 1

          15 rows selected
          ?
          SQL> select distinct num from t1;

          ?????? NUM
          ----------
          ???????? 1
          ???????? 6
          ???????? 8
          ????? ? 7
          ??????? 9

          5 rows selected



          一、用unique代替distinct:

          這個比較無恥,基本屬于說了跟沒說一樣,但確實是對的

          SQL> select unique num from t1;

          ?????? NUM
          ----------
          ???????? 1
          ???????? 6
          ???????? 8
          ????? ? 7
          ??????? 9

          5 rows selected


          二、用group by來做:

          這個應該是出題者的本意

          SQL> select num from t1 group by num;

          ?????? NUM
          ----------
          ???????? 1
          ???????? 6
          ???????? 8
          ???????? 7
          ???????? 9

          5 rows selected


          三、用union和minus:

          因為union和minus默認都是先distinct然后再做聚集,所以可以這樣做:

          SQL> select num from t1 minus select 999 from dual;

          ?????? NUM
          ----------
          ???????? 1
          ???????? 6
          ???????? 7
          ???????? 8
          ???????? 9

          5 rows selected
          ?
          SQL> select num from t1 union select num from t1 ;

          ?????? NUM
          ----------
          ???????? 1
          ???????? 6
          ???????? 7
          ???????? 8
          ???????? 9

          5 rows selected

          一個是minus一個沒有的項,一個是union它本身。



          關于其他的方法,要是再用over之類的就沒有什么太大的意義了,差不多就這3種了。
          ?
          ?
          ?
          posted on 2008-09-05 23:09 decode360 閱讀(1408) 評論(0)  編輯  收藏 所屬分類: 05.SQL
          主站蜘蛛池模板: 乌什县| 达日县| 广州市| 四会市| 邵武市| 肇源县| 焉耆| 临沂市| 壶关县| 桃园县| 株洲县| 满洲里市| 北海市| 正宁县| 福州市| 巴马| 乌兰浩特市| 永川市| 大庆市| 缙云县| 资阳市| 高雄市| 裕民县| 昌江| 观塘区| 山阳县| 修文县| 宜昌市| 五河县| 金门县| 家居| 温宿县| 卢氏县| 杭锦后旗| 竹北市| 兴业县| 景泰县| 峨眉山市| 华池县| 崇礼县| 莆田市|