DISTINCT關鍵字理解

2021-10-03 02:36:53 字數 1220 閱讀 5489

distinct關鍵字作為一種資料去重的手段,有如下使用方法:

對單個資料進行去重時:

select

distinct name from members;

--這意味著從members表中取出去重後的name值

對多個字段進行去重時:

select

distinct name,age from members;

--這意味著從members表中過濾掉name + age相同的值

--同樣意味著,distinct這個關鍵字不能在同時查詢兩個及以上欄位的時候,只過濾乙個字段,而考慮其他的字段

distinct與count()函式相結合的方法:

select

count

(distinct name)

from members;

--這意味著從members表中查詢過濾後的name的總數

select age,

count

(distinct name)

from members group

by age;

--這樣也是可以的,distinct只作用於name欄位,意味著從按age分組後的每個age對應的去重後name的總數

distinct用在所有字段之前:

select

distinct name,age from members;

--這種情況是對的

select name,

distinct age from members;

--這種mysql中會報語法錯誤

如果想對兩個欄位中的乙個去重,而另外乙個不去重的替代方法:

select name,age from members where name in

(select

distinct name from members)

;--這種子查詢可以對兩個欄位中的乙個去重,而另外乙個不去重,效率較低

代替distinct作用的其他方法舉例:

1.

用group

by 代替。select name from members group

by name;

2.定義欄位的時候用unique宣告唯一值

關於distinct關鍵字

1.當連線的表資料量很大,但是select的最終結果不是很多,且select列的個數不是很多的時候,加上distinct之後,這個排序的代價要小於semi join連線的代價。這就是增加乙個distinct操作查詢效率反而提高,這個似乎不可能發生的情況的真正原因。不加distinct的情況,由於使用...

Oracle的distinct關鍵字

distinct關鍵字用於從查詢的結果集中篩選出唯一值的記錄。我們通過示例來介紹distinct關鍵字的用法。用以下sql建立超女基本資訊表 t girl 插入一些測試資料。create table t girl id char 4 not null,編號 name varchar2 30 not ...

Oracle的distinct關鍵字

distinct關鍵字用於從查詢的結果集中篩選出唯一值的記錄。我們通過示例來介紹distinct關鍵字的用法。用以下sql建立超女基本資訊表 t girl 插入一些測試資料。create table t girl id char 4 not null,編號 name varchar2 30 not ...