2012-10-22 96 views
0

列的值我有一個表「成果」具有下列數據總結在MySQL

id a 
123 apple 
223 orange 
646 apple 
757 banana 
876 kiwi 
989 orange 

我想編寫一個MySQL將總結列的出現次數「一」,並將它們放入3獨立的水桶:一個蘋果,一個桔子,其餘下的「其他」

SELECT 
    count(*) as total 
    sum(if(a = 'apple',1,0)) as applecount 
    , sum(if(a = 'orange',1,0)) as orangecount 
    , sum(`applecount` + `orangecount` - total) as others 

FROM fruits 

但在運行查詢,提供了以下錯誤的字段列表 未知列「applecount」

回答

3
SELECT count(*) as total, 
     sum(a = 'apple') as applecount, 
     sum(a = 'orange') as orangecount, 
     sum(a not in ('orange', 'apple')) as others 
FROM fruits 

SQLFiddle example

+2

[標準SQL不允許引用「WHERE」子句中的列別名。這個限制是因爲當評估WHERE條款時,列值可能還沒有確定。](http://dev.mysql.com/doc/en/problems-with-alias.html)參見[ sqlfiddle](http://sqlfiddle.com/#!2/2270a/5/0)。 – eggyal

+0

感謝您的提示。不知道。 –

+0

不用擔心。當然,他們可以在「GROUP BY」,「HAVING」和「ORDER BY」從句中進行後評估。 – eggyal