2016-01-15 36 views
-1

我在MySQL中使用的情况下是这样的:如何在MySQL中使用大小写?

select name, age, time, countDay, dvt, total, dateLogin, 
(total - datediff(NOW(), dateLogin)) as totalVal18, 
(total - age) as totalVal22 
    case dvt 
     when dvt = 0 then countDay = totalVal18 
     when dvt = 1 then countDay = totalVal22 

更新1:

结构表:dvt, total, countDaydouble类型。

dateLogindatetime类型。用户输入为dateLoginage。 使用countDay输出以检查值。像:

where countDay >= 18

dvttinyintdvt喜欢你age > 18age < 18

错误,如: 错误,如case dvt when dvt = 0 then at line 2

当使用公式它发生错误?如何使用case when MySQL中的公式?

+1

您可以使用子查询来获取DATEDIFF值 –

+0

谢谢。我很明白。 – fds

+1

你能告诉我们样本输入和输出,以便我们可以帮助您查询吗? –

回答

2

您错误地组合了案例结构的两个版本。

要么使用

case dvt 
    when 0 then totalVal18 
    when 1 then totalVal22 
end as countDay 

或者

case 
    when dvt = 0 then totalVal18 
    when dvt = 1 then totalVal22 
end as countDay 

形式。见mysql's documentation on case

更新

不能使用列别名这种方式,你需要在case语句中的公式为好。

+0

'MySQL服务器版本当dvt = 0时使用正确的语法'case then totalVal18 dvt = 1 then'at 2' 这仍然显示此错误。 – fds

+0

原始查询@fds中的'totalVal22'后面缺少逗号。 –

1

检查该样品在这里表是指你的表名

SELECT CASE 
WHEN dvt > 18 THEN 1 
ELSE 0 END AS 
countDay 
FROM table 
相关问题