2014-05-12 54 views
1

我正在構建GameCenter類型應用程序的數據庫。以下是爲特定遊戲構建每週排行榜的查詢的開始。 「分數」作爲INT存儲在表格「遊戲」中,但另一個字段「scoreFormat」指示分數應該如何顯示在排行榜中。我正在使用SELECT IF語句通過在INT開始處連接「£」將INT轉換爲貨幣,這很好地工作。然而,現在我需要多個案例(EG時間),我似乎無法讓它工作。由於某種原因,案件陳述總是進入ELSE,我不明白爲什麼。任何人都能看到我的錯誤?謝謝select語句中的例子MySQL

SELECT userName as "User Name", 
    score_timestamp as "Score Time", 
    case score 
     When scoreFormat = "time" Then SEC_TO_TIME(score) 
     When scoreFormat = "money" Then Concat('£', score) 
     Else score 
    end as HighScore 
    FROM ... 

謝謝。

回答

0
case 
    When scoreFormat = "time" Then SEC_TO_TIME(score) 
    When scoreFormat = "money" Then Concat('£', score) 
    Else score 
end 
as HighScore 
0

有兩種方法可以使用CASE語句。您可以使用它作爲SWICH /箱:

CASE scoreFormat 
    WHEN 'time' THEN ... 
    ELSE .. 
END 

或者你可以明確的表達式中使用它:

CASE 
    WHEN scoreFormat = 'time' THEN ... 
    ELSE ... 
END 

您使用了兩下,像您期望的不工作的組合。