我对MySQL查询有一个问题。 我有一个从多个表中进行选择的大查询,它工作得很好。 我想编辑它的一小部分。
这是我要编辑的一小部分。 这部分工作正常,但我想添加另一个if语句。
round(if(m.id in (2280659, 2300116,3612005, 5309555), m.duration / 100, m.duration) / 60,1) as "Activity time in minutes"
我希望它是这样的东西,但我似乎不能得到正确的语法。 我尝试了一个嵌套的if示例,我在网上找到,但这给了我语法错误。
round(if(m.id in (2280659, 2300116,3612005, 5309555), m.duration / 100, m.duration, if m.id in (12312323, 2323232), m.duration / 1000, m.duration)) / 60,1) as "Activity time in minutes"
如果M.ID为(2280659,2300116,3612005,5309555),我要M.Duartion/100;如果M.ID为(12312323,2323232),我要M.Duration/1000
希望我说得够清楚了。 如果有人能为我指明正确的方向,我将不胜感激,谢谢!
编辑1:更改了查询以匹配括号计数,但仍然没有成功。
round(if(m.id in (2280659, 2300116,3612005, 5309555), m.duration / 100, m.duration, if (m.id in (12312323, 2323232), m.duration / 1000, m.duration)) / 60,1) as "Activity time in minutes"
错误消息:
mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:您的SQL语法中有一个错误; 检查与您的MySQL server版本相对应的手册中是否有正确的语法,以便在第3行的“if(m.id in(12312323,2323232),m.duration/10000,m.duration))/60,1)附近使用”Tegevuse kest
IF()构造是
IF( condition is true, use this answer, else this answer)
在你尝试筑巢的时候,你需要
IF( condition, this, IF( second condition, this, else default ) )
你也可以使用case/when,这可能会让你更容易理解
round( case when m.id in (2280659, 2300116,3612005, 5309555)
then m.duration / 100
when m.id in (12312323, 2323232)
then m.duration / 1000
else m.duration end
/ 60, 1) as "Activity time in minutes"
编辑1:更改了查询以匹配括号计数,但仍然没有成功。
经过漂亮的格式化后,问题就显现出来了:
round(
if(
m.id in (
2280659, 2300116,3612005, 5309555
),
m.duration / 100,
m.duration,
if(
m.id in (
12312323, 2323232
),
m.duration / 1000,
m.duration
)
) / 60, 1
) as "Activity time in minutes"