Distinct函式的替代方法

2021-08-30 22:22:46 字數 1323 閱讀 3282

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

sql> select num from t1;

num

---------- 6

6 78 9

1 11 1

1 11 1

1 115 rows selected

sql> select distinct num from t1;

num

---------- 1

6 87 9

5 rows selected

一、用unique代替distinct:

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

sql> select unique num from t1;

num

---------- 1

6 87 9

5 rows selected

二、用group by來做:

這個應該是出題者的本意

sql> select num from t1 group by num;

num

---------- 1

6 87 9

5 rows selected

三、用union和minus:

因為union和minus預設都是先distinct然後再做聚集,所以可以這樣做:

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

num

---------- 1

6 78 9

5 rows selected

sql> select num from t1 union select num from t1 ;

num

---------- 1

6 78 9

5 rows selected

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

關於其他的方法,要是再用over之類的就沒有什麼太大的意義了,差不多就這3種了。

替代方法 聲母替代 遺漏的矯治方法

本節課程 言語訓練的知識與技巧 之 聲母替代 遺漏的矯治方法 本期,馬老師講解了聲母替代 遺漏有哪些常見的出錯現象及具體矯治辦法,並進行詳細分析。聲母替代 遺漏的矯治方法 言語訓練的知識與技巧 主要講述了聽障兒童不同的 階段,言語訓練的內容 技巧與側重點。從 初期家長關心的聽能問題入手,講解聽能反應...

替代CASE的方法

case是乙個標量表示式,根據條件邏輯返回乙個值,既然是表示式,就不能當是一條語句來控制邏輯的流程。今天在網上看到一帖 根據上帖,建立乙個表,並填充資料 create tablet a nvarchar 10 b nvarchar 10 insert into t values 001 y inse...

替代CASE的方法

case是乙個標量表示式,根據條件邏輯返回乙個值,既然是表示式,就不能當是一條語句來控制邏輯的流程。今天在網上看到一帖 根據上帖,建立乙個表,並填充資料 create tablet a nvarchar 10 b nvarchar 10 insert into t values 001 y inse...