Decode360's Blog

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

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評(píng)論 :: 0 Trackbacks
          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          公告

          常用鏈接

          隨筆分類(lèi)(299)

          隨筆檔案(299)

          文章分類(lèi)(26)

          新聞分類(lèi)(24)

          收藏夾(5)

          Blog列表

          IT網(wǎng)站

          My Link

          最新隨筆

          最新評(píng)論

          ??? 今天在論壇上看到一個(gè)面試題,是說(shuō)有什么辦法可以替代distinct,得到同樣的結(jié)果。
          ??? 答案都被大家說(shuō)的差不多了,發(fā)現(xiàn)挺有意思的,就記錄一下:

          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:

          這個(gè)比較無(wú)恥,基本屬于說(shuō)了跟沒(méi)說(shuō)一樣,但確實(shí)是對(duì)的
          SQL> select unique num from t1;
          ??????????????????????????????????? NUM
          ---------------------------------------
          ????????????????????????????????????? 1
          ????????????????????????????????????? 6
          ????????????????????????????????????? 8
          ????????????????????????????????????? 7
          ????????????????????????????????????? 9
          5 rows selected



          二、用group by來(lái)做:

          這個(gè)應(yīng)該是出題者的本意
          SQL> select num from t1 group by num;
          ??????????????????????????????????? NUM
          ---------------------------------------
          ????????????????????????????????????? 1
          ????????????????????????????????????? 6
          ????????????????????????????????????? 8
          ????????????????????????????????????? 7
          ????????????????????????????????????? 9
          5 rows selected



          三、用union和minus:

          因?yàn)閡nion和minus默認(rèn)都是先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

          一個(gè)是minus一個(gè)沒(méi)有的項(xiàng),一個(gè)是union它本身。



          關(guān)于其他的方法,要是再用over之類(lèi)的就沒(méi)有什么太大的意義了,差不多就這3種了。




          -The End-

          posted on 2008-09-05 23:09 decode360-3 閱讀(1222) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): SQL Dev
          主站蜘蛛池模板: 阜宁县| 永胜县| 星子县| 涟水县| 涿州市| 达州市| 赤水市| 刚察县| 剑阁县| 甘南县| 肇东市| 叙永县| 新巴尔虎右旗| 成都市| 仁寿县| 湛江市| 怀柔区| 连云港市| 独山县| 南阳市| 正阳县| 昌邑市| 梅州市| 大余县| 尉氏县| 惠安县| 尼勒克县| 中宁县| 玛纳斯县| 汉源县| 浮山县| 土默特右旗| 清苑县| 江永县| 喀什市| 靖宇县| 田东县| 固原市| 华池县| 辽宁省| 石楼县|