Mysql Case When 多列

本文介绍了一个SQL查询案例,用于从数据库中检索特定租户和实体的属性配置详情,包括属性名称、显示名称、数据类型等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELECT a.api_key AS '属性名称',
       a.label AS '属性显示名称',
       CASE
           WHEN a.item_type = 1 THEN '文本'
           WHEN a.item_type = 2 THEN '布尔型'
           WHEN a.item_type = 4 THEN '单选'
           WHEN a.item_type = 5 THEN '整型'
           WHEN a.item_type = 6 THEN '实数'
           WHEN a.item_type = 7 THEN '长整型'
           WHEN a.item_type = 8 THEN '日期'
           WHEN a.item_type = 9 THEN '时间'
           WHEN a.item_type = 10 THEN 'ID'
           ELSE ''
       END AS '数据类型',
       CASE
           WHEN a.is_member_only = 1 THEN '是'
           WHEN a.is_member_only = 0 THEN '否'
           ELSE ''
       END AS '会员专用',
       CASE
           WHEN a.hidden_flg = 1 THEN '隐藏'
           WHEN a.hidden_flg = 0 THEN '显示'
           ELSE ''
       END AS '显示状态',
       CASE
           WHEN a.require_flg = 1 THEN '是'
           WHEN a.require_flg = 0 THEN '否'
           ELSE ''
       END AS '是否必填',
       CASE
           WHEN a.sort_flg = 1 THEN '是'
           WHEN a.sort_flg = 0 THEN '否'
           ELSE ''
       END AS '是否分组',
       CASE
           WHEN a.description IS NULL THEN ''
           ELSE a.description
       END AS '属性值事例或说明'
FROM cdp_item a
WHERE tenant_id = 1216983876421894
  AND entity_id = 658
  AND created_by = 1345805699270860 ;

 

### MySQLCASE WHEN 语句的嵌套与多次叠加用法 在 MySQL 中,`CASE WHEN` 是一种强大的条件判断语句,可以用于实现复杂的逻辑判断。它可以嵌套使用,也可以通过多次叠加来处理多层条件逻辑。以下是关于 `CASE WHEN` 嵌套和多次叠加的具体用法说明。 #### 1. CASE WHEN 的基本语法 `CASE WHEN` 语句的基本形式如下: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE resultN END ``` 其中,`condition` 是一个布尔表达式,如果为真,则返回对应的 `result` 值[^1]。 #### 2. CASE WHEN 的嵌套用法 `CASE WHEN` 支持嵌套,即可以在一个 `CASE WHEN` 的分支中再次使用 `CASE WHEN` 来进一步细化条件。例如: ```sql SELECT column1, CASE WHEN column2 = 'A' THEN CASE WHEN column3 > 10 THEN 'High' WHEN column3 <= 10 THEN 'Low' ELSE 'Unknown' END WHEN column2 = 'B' THEN 'Medium' ELSE 'Other' END AS result FROM table_name; ``` 在这个例子中,当 `column2 = 'A'` 时,会进一步根据 `column3` 的值判断是 `'High'` 还是 `'Low'`,否则直接返回 `'Medium'` 或 `'Other'`[^2]。 #### 3. CASE WHEN 的多次叠加用法 `CASE WHEN` 的多次叠加是指在同一查询中连续使用多个 `CASE WHEN` 结构,以分别处理不同的列或字段。例如: ```sql SELECT column1, CASE WHEN column2 = 'A' THEN 'Type A' WHEN column2 = 'B' THEN 'Type B' ELSE 'Other Type' END AS type_result, CASE WHEN column3 > 10 THEN 'High Value' WHEN column3 <= 10 THEN 'Low Value' ELSE 'Unknown Value' END AS value_result FROM table_name; ``` 在这里,第一个 `CASE WHEN` 处理 `column2` 的类型分类,第二个 `CASE WHEN` 则处理 `column3` 的数值范围分类[^3]。 #### 4. 实际应用示例 以下是一个完整的示例,展示如何在 MySQL 中使用 `CASE WHEN` 的嵌套与叠加: 假设有一个名为 `orders` 的表,包含以下字段:`order_id`, `customer_id`, `amount`, `status`。我们希望根据订单金额和状态生成一个新的字段 `order_category`,并同时对客户进行分类。 ```sql SELECT order_id, customer_id, amount, status, -- 使用 CASE WHEN 嵌套生成 order_category CASE WHEN status = 'completed' THEN CASE WHEN amount > 1000 THEN 'High Value Order' WHEN amount BETWEEN 500 AND 1000 THEN 'Medium Value Order' ELSE 'Low Value Order' END WHEN status = 'pending' THEN 'Pending Order' ELSE 'Cancelled Order' END AS order_category, -- 使用 CASE WHEN 叠加生成 customer_type CASE WHEN amount > 2000 THEN 'VIP Customer' WHEN amount BETWEEN 1000 AND 2000 THEN 'Preferred Customer' ELSE 'Regular Customer' END AS customer_type FROM orders; ``` #### 5. 注意事项 - 嵌套层数不宜过深,否则会导致代码可读性下降,并可能影响执行效率。 - 在设计查询时,尽量保持逻辑清晰,避免不必要的复杂性。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值