2013-07-24 30 views
0

我試圖計算數據庫中總數爲50且名稱只出現一次的行數。這是查詢我有我確信會的工作MySQL忽略多次出現的列的查詢結果

SELECT name, 
     gross 
FROM daysheet 
WHERE gross = '50' 
GROUP BY name 
HAVING Count(name) = 1 

然而,這似乎並不奏效我認爲這應該是這樣。

GROSS  NAME 
50  Person 1 
50  Person 2 
705  Person 2 

上面是表格的一個例子。我想是因爲50出現1次,其中名稱是完全獨特的我的查詢返回1行,但上面的查詢將返回2這個

我使用DISTINCT,但也試過它總是返回2.

我哪裏出錯了?

謝謝!

說明:我正在嘗試檢索總數爲50的行數,並且名稱只在數據庫中出現1次。所以,因爲它出現了兩次第2個人將被忽略,且num行應該是1,因爲只有1次有50毛和只出現一次的名稱

+1

您已經使用'SELECT DISTINCT name'?如果不是,你在哪裏放置了「DISTINCT」? – AmazingDreams

+0

@AmazingDreams'「SELECT DISTINCT name,gross FROM daysheet WHERE gross ='50'」'仍在返回2 – robz228

+1

讓我直截了當地說:你只希望每個人只有一條記錄,或者只有記錄,哪裏沒有人重複?換句話說,你應該得到「50人1」? –

回答

1

嘗試......

select name, gross 
from daysheet d1 
where gross = 50 
and 1 in (select count(name) 
      from daysheet d2 
      where d2.name = d1.name) 

http://sqlfiddle.com/#!2/be634/1

+0

顯然,我需要了解更多信息!從來沒有想到這一點。非常感謝:D – robz228

+0

@ robz228是的,我們都需要學習更多:) – Verma

0
SELECT name, 
     gross 
FROM daysheet 
GROUP BY name, gross 
HAVING Count(name) = 1 

應該沒問題

0

這應該適合你。

SELECT name, gross FROM daysheet WHERE gross='50' and name in 
(SELECT name FROM daysheet GROUP BY name HAVING count(name)=1)