casewhen 修改数据
时间: 2023-08-28 12:17:54 浏览: 81
CASE WHEN THEN ELSE END 是 SQL 中的条件表达式,用于根据不同的条件返回不同的结果。
语法格式如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
其中,condition1、condition2 等是条件表达式,
相关问题
mysql casewhen 多列数据如何排名
如果你想根据多列 `CASE WHEN` 的结果进行排名,可以使用 `ORDER BY` 子句对这些列进行排序。以下是一个示例:
```
SELECT column1, column2,
CASE WHEN condition1 THEN result1 ELSE result2 END AS my_result1,
CASE WHEN condition2 THEN result3 ELSE result4 END AS my_result2
FROM my_table
ORDER BY my_result1 DESC, my_result2 ASC;
```
在这个例子中,我们在 `SELECT` 语句中使用了两个 `CASE WHEN` 表达式,并将它们分别命名为 `my_result1` 和 `my_result2`。然后,在 `ORDER BY` 子句中,我们首先按照 `my_result1` 列进行降序排序,然后按照 `my_result2` 列进行升序排序。
你可以根据需要调整 `ORDER BY` 子句以实现所需的排序顺序。
casewhen套casewhen
CASE WHEN语句在MySQL中可以用来实现类似于Java中的switch...case的功能。可以通过嵌套多个CASE WHEN语句来实现更复杂的逻辑判断。在给出的引用和引用中,都展示了使用CASE WHEN套CASE WHEN的例子。
首先,让我们看一个简单的例子,引用中的示例代码:
SELECT CASE
WHEN ISNULL(work_order_no) THEN
(CASE WHEN 2 > 1 THEN 11 ELSE 22 END)
ELSE
(CASE WHEN 1 > 0 THEN 33 ELSE 66 END)
END
FROM qk_20030102
WHERE work_order_no = 'GD0000070324'
这个例子中,首先判断work_order_no是否为空,如果为空,则进入内层的CASE WHEN语句进行判断。如果2大于1,则返回11,否则返回22。如果work_order_no不为空,则进入外层的CASE WHEN语句进行判断。如果1大于0,则返回33,否则返回66。
类似地,我们可以看引用中的实际使用例子:
SELECT work_order_no, CASE
WHEN UNIX_TIMESTAMP(STR_TO_DATE(chuangjian_time, '%Y-%m-%d %H:%i:%s')) > UNIX_TIMESTAMP(STR_TO_DATE(CONCAT(substring(chuangjian_time, 1, 10), "18:00:00"), '%Y-%m-%d %H:%i:%s')) THEN
(CASE
WHEN UNIX_TIMESTAMP(STR_TO_DATE(substring(chuangjian_time, 1, 10), '%Y-%m-%d %H:%i:%s')) 124200 >= UNIX_TIMESTAMP(STR_TO_DATE(yuyue_opt_time, '%Y-%m-%d %H:%i:%s')) THEN 1
ELSE 0
END)
ELSE
(CASE
WHEN UNIX_TIMESTAMP(STR_TO_DATE(assign_time, '%Y-%m-%d %H:%i:%s')) 5400 >= UNIX_TIMESTAMP(STR_TO_DATE(yuyue_opt_time, '%Y-%m-%d %H:%i:%s')) THEN 1
ELSE 0
END)
END
FROM qk_20030102
在这个例子中,根据时间戳的比较结果,进入不同的内层CASE WHEN语句。如果满足条件,返回1,否则返回0。
综上所述,以上是关于CASE WHEN套CASE WHEN的解释和示例。根据具体情况,可以嵌套多个CASE WHEN语句以满足复杂的逻辑需求。
阅读全文