2011-03-28 49 views
2

我有這個疑問...MySQL的數字符串occurances

SELECT SUM(brownlow_votes) AS votes, 
player_id, 
player_name, 
player_team, 
COUNT(*) AS vote_count 
FROM afl_brownlow_phantom, afl_playerstats 
WHERE player_id=brownlow_player 
AND brownlow_match=player_match 
GROUP BY player_id 
ORDER BY votes DESC LIMIT 50 

因此,「票」成爲選票的球員有多少,「vote_count」成爲次數(比賽中)一球員已被投票。這工作正常。

但是,我有另一個名爲「brownlow_lock」的列,它是空白或'Y'。我如何得到'Y'的發生次數?我知道我可以解決這個問題,將它改爲0或1,只是做一個SUM(),但我不想去編輯大量插入數據的頁面。

回答

1

如果我理解正確的,你,你只需要

COUNT(CASE WHEN brownlow_lock='Y' THEN 1 END) AS Cnt 

添加到您的查詢

+0

謝謝馬丁,只有當這個遊戲有'Y'呃雖然?有時他們有超過1 ... – Mark 2011-03-28 21:07:08

+0

其實,我可能在這裏錯了,我想我的查詢中有一個錯誤,實際上並不包括所有的選票。我會回來的! – Mark 2011-03-28 21:08:36

+0

@Mark - 如果一個組中有多個「Y」,它們將被計數。這是期望的結果嗎? – 2011-03-28 21:08:52

0

使用IF control flow function

SELECT SUM嘗試(IF(brownlow_lock = 'Y', 1,0))lock_count ...

+0

嗨弗雷德裏克,我試過,但它沒有正確的工作。上面的答案雖然運作良好。不管怎麼說,還是要謝謝你 :) – Mark 2011-03-28 21:13:13