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 ...