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一下
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM