Distinct函数的替代方法

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它本身。



这篇文章是从网上转载的,在实际项目中运到了MARK一下
 
posted @ 2012-05-22 16:43  火精灵  阅读(5648)  评论(0编辑  收藏  举报