2011-03-09 38 views
1

我有以下SQL語句:MySQL - 使用條件與計數?

select val, count(*) as tally from sometable group by val order by tally desc 

將會產生以下的(例子)表:

val | tally 
----+------- 
4 | 20 
5 | 10 
6 | 5 
7 | 3 
8 | 2 

現在,我想只顯示行,其中tally > 5,這樣的結果將是:

val | tally 
----+------- 
4 | 20 
5 | 10 

我想這個說法,但它不工作(它說:「理貨」未知):

select val, count(*) as tally from sometable where tally > 5 group by val order by tally desc 

回答

5

嘗試有(more information):

select val, count(*) as tally from sometable group by val having tally > 5 order by tally desc 
0

,有兩種方式可以採取:

1:使用HAVING。這意味着,查詢結果將被過濾爲每HAVING條款,只有一些原始的結果行會退還給你:

SELECT val, COUNT(*) AS tally 
FROM sometable 
GROUP BY val 
ORDER BY tally DESC 
HAVING tally > 5 

2:使用子選擇。這可能會給你更好的表現(我沒有sql guru,所以我不能自信地說):

SELECT val, tally 
FROM (SELECT val, COUNT(*) AS tally 
     FROM sometable 
     GROUP BY val 
     ORDER BY tally DESC) 
     temp 
WHERE tally >1