另类实现where语句用if else(case when)控制一个字段的不同条件查询

本文介绍了如何利用if-else或case when语句根据前置条件在SQL查询中动态选择不同字段或条件。通常,case when在where子句中只能用于条件相同的情况,但通过在子查询中设定不同查询条件并返回0或1,再在外层SQL中依据前置条件判断启用哪个查询条件,可以解决更复杂的需求。文中提供了实例和通用总结,适用于处理复杂的数据库查询场景。
摘要由CSDN通过智能技术生成

如何另类实现where语句用if else(case when)控制一个字段的条件查询

想要实现的查询效果

其实想要达到的效果类似于以下代码所表达的意思:

select *
from TEST_TABLE
where case when exist(
      	select * --exist里仅仅是举例
      	from OTHER_TABLE on TEST_TABLE.ID = OTHER_TABLE.ID)
      then TEST_TABLE.NAME is null
      else TEST_TABLE.NAME is not null end;

根据一个条件(就是exist所判断的内容 这里暂且称之为前置条件) 判断where语句中该使用哪个字段或条件进行查询
但是我们知道case when在where语句中只能如下使用:

select *
from TEST_TABLE
where case when exist(
      	select * --exist里仅仅是举例,实际情况更复杂
      	from OTHER_TABLE on TEST_TABLE.ID = OTHER_TABLE.ID)
      then TEST_TABLE.NAME 
      else TEST_TABLE.SEX end is null;

case when只能条件值为同一个,而使用不同的字段去做分支。

实现方式


                
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值