2014-09-25 198 views
1

我用下面的查詢,並返回了什麼,我想這回,但我有一個艱難的時間環繞我的頭周圍什麼查詢正在進行。SELECT DISTINCT(COUNT(*))究竟幹什麼?

查詢無非是什麼在標題票友:select distinct(count(*)) from table1

+2

的'不需要Distinct'。它得到'Table1'中的所有數據的單個Count,然後得到不同的計數(只有一個)。你可以通過同樣的結果:'SELECT COUNT(*)FROM Table1' – Siyual 2014-09-25 18:12:36

+1

你確定這是不是'SELECT COUNT(DISTINCT *)FROM table1'?這會更有意義,「DISTINCT」實際上會執行有用的功能。 – 2014-09-25 18:13:02

+2

'DISTINCT'是一個SQL關鍵字,不是'DISTINCT()'的函數。這是人們經常犯的一個錯誤,它掩蓋了它真正的目的,以及它在整個行集上的作用,而不是它最接近的列名。 – 2014-09-25 18:14:18

回答

1

的不同是多餘的... SELECT COUNT(*)只有一個表只能生成一個值,所以不同(這將消除重複)是irelelvant。

如果你有多個輸出(例如,如果你是在什麼分組),那麼這將導致查詢只顯示一個輸出一行COUNT(*)的每個不同的值,將其他明智的生成......

如果,例如,你有

name 
Bob 
Bob 
Bob 
Bob 
Mary 
Mary 
Mary 
Mary 
Dave 
Dave 
Al 
George 

然後

select count(*) 
From table 
group By name 

會導致

4 
    4 
    2 
    1 
    1 

select distinct count(*) 
From table 
group By name 

會導致

4 
    2 
    1 
3

的不同之處在你的SQL不是必需的,因爲你會得到唯一的結果,COUNT(*)沒有group by子句的回報,該表中所有行的計數。

因此試試這個:

select count(*) from table1 

鮮明用於從一組值的尋找不同的值:

說你有表1,與COLUMN1爲:

 
Column1 
---------- 
a 
a 
b 
b 
a 
c 

以下sql語句正在運行,你會得到輸出:

1)select count(*) from table1

輸出:6

2)select distinct(count(*)) from table1

輸出:6

3)select count(distinct column1) from table1

輸出:3

一般不同,使用內部計數優選與特定的列。

select count(distinct column_name_n) from table1