mysql中case when判断两个字段的实现

本文介绍了如何在MySQL中使用CASE WHEN语句进行多条件字段过滤。示例查询首先根据lab字段筛选,然后根据bar_code字段进一步过滤,通过DISTINCT去除重复值,并最终使用COUNT统计不重复的bar_code数量。这种方法在数据处理和分析中非常实用。

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

mysql中case when判断两个字段的实现

select 
COUNT(distinct case when p.lab like '%L%' then 
(case when p.bar_code like '%T%' then p.bar_code else null end) 
else null end ) countBarCode
 from t_plan p

说明:在case when的then位置嵌套case when,能够实现两个条件对某一个字段的过滤。
上面的例子是首先根据lab字段过滤,然后根据bar_code过滤,返回bar_code ,之后distinct 对返回的bar_code去重,最后count对不重复的bar_code做了一个统计返回。

MySQL中,`CASE WHEN`语句用于条件判断并返回基于特定条件的值。它可以用于单个字段,但在处理多个字段或需要复杂条件查询时,通常我们使用的是`IF()`函数或者是结合`UNION`这样的操作,而不是直接将多个`WHEN`子句应用于多个字段。以下是针对单个字段的例子: ```sql SELECT column_name, IF(column_name > some_value, 'Higher', 'Lower') AS comparison_result FROM table_name; ``` 如果你想根据几个条件对数据进行分段,并生成多个结果集,可以考虑使用`UNION`来组合查询结果: ```sql SELECT field1, field2 FROM ( SELECT field1, field2, 'ConditionA' FROM your_table WHERE condition_for_A ) a UNION ALL SELECT field1, field2 FROM ( SELECT field1, field2, 'ConditionB' FROM your_table WHERE condition_for_B ) b UNION ALL SELECT field1, field2 FROM ( SELECT field1, field2, 'DefaultCondition' FROM your_table ); ``` 在这个例子中,每个内部查询都只包含满足特定条件的记录,并附上相应的标签(如 'ConditionA'、'ConditionB' 或 'DefaultCondition'),外部查询通过 `UNION ALL` 来合并这些结果。 如果你是在问如何在单一查询中应用多条件判断到多个字段,通常的做法会涉及更复杂的逻辑构建,这可能包括使用多个`CASE WHEN`语句或结合其他聚合函数等。例如,假设你需要根据两个字段的不同情况来计算总分: ```sql SELECT column1, column2, CASE WHEN column1 > 50 AND column2 > 50 THEN (column1 + column2) WHEN column1 > 50 THEN column1 * 2 ELSE column2 * 2 END as total_score FROM your_table; ``` 这个示例中,`CASE`语句根据`column1`和`column2`的值进行不同的计算规则。请注意,实际的应用场景可能会要求更精确的逻辑设计,上述内容仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值