首页 > 解决方案 > MySQL 多个 if 语句

问题描述

我对 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"

错误信息:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 'if(m.id in (12312323, 2323232), m.duration / 10000, m.duration)) / 60,1) 附近使用“Tegevuse kest” ' 在第 3 行

标签: mysqlnested

解决方案


IF() 构造是

IF( condition is true, use this answer, else this answer)

要在尝试时筑巢,您需要

IF( condition, this, IF( second condition, this, else default ) )

您也可以使用案例/时间,这可能会使您更容易理解

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"

推荐阅读