MySQL带有CASE的Where条件


WHERE CASE WHEN cksp.status IS NOT NULL THEN ckspc.is_include_in_pipeline = 1 
ELSE 1=1 
END

这里我想如果cksp.status不为null,那么条件应该是cksp.is_in_pipeline=1 ELSE忽略where条件

跳过case表达式,使用正则AND/OR,

WHERE cksp.status IS NULL
OR ckspc.is_include_in_pipeline = 1 

该逻辑应该类似于:

(cksp.status IS NOT NULL and ckspc.is_include_in_pipeline = 1) or cksp.status IS NULL
WHERE ckspc.is_include_in_pipeline = CASE WHEN cksp.status IS NOT NULL THEN  1 
ELSE 9999999
END

WHERE ckspc.is_include_in_pipeline =  1 
or ckspc.status IS NOT NULL

演示只有一个表

最新更新