如何另类实现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只能条件值为同一个,而使用不同的字段去做分支。