2014-05-12 43 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 

您使用了两下,像您期望的不工作的组合。