mysql - 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 行
解决方案
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"
推荐阅读
- hololens - 在 Unity 中访问 HoloLens 深度图像?
- python - 创建变量以根据日期建立 Excel 工作表
- dart - json字符串转换问题
- php - php - 设置没有默认值的函数并调用没有输入值的函数
- html - 卡片图像对齐
- java - 如何在spring中通过执行程序服务创建的线程中注入服务
- spring - 启用多个身份验证提供程序 Spring Boot 安全性
- reactjs - 当 CSS 使用 @import 时,Jest 失败
- ios - 在 react 应用程序上将 http 更改为 https 会使页面在 Safari 上的 iOS 上不断刷新
- sql - 当主键在sql中已知时,如何对特定单元格进行外键引用?