今天在论坛上看到一个面试题,是说有什么办法可以替代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它本身。