mysql case when 中可以使用and

SQL状态列表生成案例
本文通过一个具体的SQL案例展示了如何根据不同条件生成订单的状态列表。该案例涵盖了多种订单状态的判断逻辑,包括未评审、评审已接收、评审未接收及评审中等状态。
(case 
when com_orders.is_review =0 then \'未评审\' 
when com_orders.is_review is NULL and com_orders.type=2 then \'未评审\' 
when com_orders.is_review=1 and com_reviews.review=0 then \'评审已接收\' 
when com_orders.is_review=1 and com_reviews.review=1 then \'评审已接收\' 
when com_orders.is_review=1 and com_reviews.review=2 then \'评审未接收\' 
when com_orders.is_review=2 then \'评审中\' else null end) 
as list_status
记录一篇,示例如上。

感谢您的阅读,如果觉得文章对您有帮助,请支持一下。

### MySQLCASE WHEN 的用法与示例 #### 基本语法 MySQL 提供了两种形式的 `CASE` 表达式,分别是 **简单匹配模式** 和 **搜索条件模式**。 1. **简单匹配模式** 这种方式通过将某一列名或表达式的值与一系列固定值进行比较来决定返回的结果。其语法如下: ```sql CASE col_name WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE default_result END ``` 此处,如果 `col_name` 的值等于某一个 `valueN`,则会返回对应的 `resultN`;如果没有匹配项,则返回 `default_result`[^1]。 2. **搜索条件模式** 该模式允许更灵活的条件判断,可以使用任意布尔表达式作为条件。其语法为: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` 如果某个 `conditionN` 返回 true,则执行相应的 `resultN` 部分;否则执行 `default_result`[^2]。 --- #### 实际案例分析 以下是两个具体的例子分别展示这两种模式的应用场景: ##### 示例 1:简单匹配模式 假设有一个名为 `orders` 的表,其中有一列 `status` 记录订单状态(取值可能是 'pending', 'shipped' 或其他)。我们希望根据 `status` 列显示更加友好的描述信息。 ```sql SELECT order_id, status, CASE status WHEN 'pending' THEN 'Order is waiting to be shipped' WHEN 'shipped' THEN 'Order has been shipped' ELSE 'Unknown Status' END AS description FROM orders; ``` 在此查询中,对于每一行数据都会依据 `status` 列的具体值给出对应的文字说明[^3]。 ##### 示例 2:搜索条件模式 继续沿用上面提到的 `orders` 表,现在我们需要按照金额范围分类这些订单,并标记它们属于哪个等级。 ```sql SELECT order_id, amount, CASE WHEN amount BETWEEN 0 AND 99 THEN 'Low Value Order' WHEN amount BETWEEN 100 AND 499 THEN 'Medium Value Order' WHEN amount >= 500 THEN 'High Value Order' ELSE 'Invalid Amount' END AS order_level FROM orders; ``` 这里利用的是数值区间来进行划分而不是单纯依赖于离散型变量[^2]。 --- #### 注意事项 - 在书写 SQL 查询时应确保所有的分支都有覆盖的可能性或者提供默认处理方案以防遗漏情况发生。 - 使用复杂逻辑时需注意性能优化问题,因为过多嵌套可能会降低效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值