在开发中遇到这样的一个需求,在一张表中需要根据某个字段的值来使where执行不同的判断条件。简单的例子如下
自己简单的建了一张表
查询语句如下(通过某个字段的值,where后执行不同的刷选条件)
SELECT
*
FROM
test_casewhen a
WHERE
//这里就建了一张表,所以就用表中的字段,在case when的条件查询语句中查询返回flag的值如果等于1 则where后执行flag=‘1’的条件,否则执行flag=‘0的条件’
( CASE WHEN ( SELECT flag FROM test_casewhen WHERE id = 2 ) = 1
THEN flag = '1' ELSE flag = '0' END )
如果case when (SELECT flag FROM test_casewhen WHERE id = 2)的值=1的结果如下(where后执行flag=‘1’的条件)
值=2(where后执行flag=‘0’的条件)