mysql语句case when
时间: 2023-10-31 22:57:21 浏览: 104
MySQL语句中的CASE WHEN用于在查询结果中根据条件进行条件判断和返回值选择。根据引用,CASE WHEN有两种写法。第一种写法的实例是在SELECT语句中使用CASE WHEN,如引用所示。在这种写法中,可以根据多个条件进行判断,然后返回相应的结果值。第二种写法的实例是在SELECT语句的字段中使用CASE WHEN,如引用所示。在这种写法中,根据字段的值进行判断,并将判断结果赋给一个新的字段。在这两种写法中,可以使用多个WHEN子句来添加更多的条件判断,同时也可以使用ELSE子句来处理没有匹配到任何条件的情况。
相关问题
请下列将Oracle语句转为mysql语句 CASE WHEN t.pm_mp_machine_id = 'JJY213' THEN ROUND(t.STOPTIME/60, 0) ELSE ROUND((t.STOPTIME - (CASE WHEN t.no > 1 THEN COALESCE(LAG(t.STOPTIME, 1) OVER(PARTITION BY t.producedate, t.pb_shift_id, t.pm_mp_machine_id, t.pm_mp_stopcode_id ORDER BY t.no), 0) ELSE 0 END))/60, 0) END AS STOPTIME
以下是将Oracle语句转换为MySQL语句的示例:
CASE WHEN t.pm_mp_machine_id = 'JJY213' THEN ROUND(t.STOPTIME/60, 0) ELSE ROUND((t.STOPTIME - COALESCE((SELECT lag(t2.STOPTIME) FROM MT_DC_PM_MP_PT110DATA t2 WHERE t2.producedate = t.producedate AND t2.pb_shift_id = t.pb_shift_id AND t2.pm_mp_machine_id = t.pm_mp_machine_id AND t2.pm_mp_stopcode_id = t.pm_mp_stopcode_id AND t2.no < t.no ORDER BY t2.no DESC LIMIT 1), 0))/60, 0) END AS STOPTIME
请注意,MySQL中的LAG函数在子查询中不能与ORDER BY一起使用,因此在这里进行了调整。另外,MySQL中的LIMIT子句用于限制子查询结果的行数。
MySQL中case when 语句
在MySQL中,`CASE WHEN`语句用于根据特定条件返回不同的结果。它主要用于条件判断和数据转换。这里有两个示例:
1. **基于列值的条件判断**[^1]:
```sql
SELECT
id,
CASE
WHEN status = 'active' THEN '用户活跃'
WHEN status = 'inactive' THEN '用户不活跃'
ELSE '未知状态'
END AS status_description
FROM users;
```
这里会根据`status`列的值(如'active'或'inactive')返回相应的描述。
2. **使用IF函数的简化版本**[^2]:
```sql
SELECT
score,
CASE
WHEN score = 'A' THEN '优'
ELSE '不及格'
END AS grade
FROM grades;
```
这里通过`CASE`语句实现了与`IF`函数类似的功能,如果`score`等于'A',则返回'优',否则返回'不及格'。
阅读全文