mysql中的一种情况,但不是两种情况
我有一个案例陈述:mysql中的一种情况,但不是两种情况,mysql,case,Mysql,Case,我有一个案例陈述: case when R1 = risk_factor OR R2 = risk_factor then 1 else 0 end 但它也开始回升 case when R1 = risk_factor AND R2 = risk_factor then 1 else 0 end 正确的语法是什么: case when (R1 = risk_factor or R2 = risk_factor) BUT NOT (R1 = risk_factor AND R2 = risk_
case when R1 = risk_factor OR R2 = risk_factor then 1 else 0 end
但它也开始回升
case when R1 = risk_factor AND R2 = risk_factor then 1 else 0 end
正确的语法是什么:
case when (R1 = risk_factor or R2 = risk_factor) BUT NOT (R1 = risk_factor AND R2 = risk_factor) then 1 else 0 end
你必须从“最困难”的条件开始
case when (R1 = risk_factor AND R2 = risk_factor) then 0
when (R1 = risk_factor OR R2 = risk_factor) then 1
else 0
end
应该是
(R1 = risk_factor or R2 = risk_factor) AND NOT (R1 = risk_factor AND R2 = risk_factor)
但是,您也可以使用XOR
(R1 = risk_factor XOR R2 = risk_factor)
逻辑异或。如果任一操作数为NULL,则返回NULL。对于非空
操作数,如果奇数个操作数为非零,则计算结果为1,
否则返回0
但是,在您的特定情况下,您也可以将条件写为
(risk_factor IN (R1, R2) AND R1 <> R2)
(风险系数(R1、R2)和R1 R2)
注意:如果您的大小写表达式类似于
,那么1或者0
,那么您根本不需要它。您可以只使用布尔表达式。有一个例外:如果您的布尔表达式可以返回NULL,并且希望将其转换为0
。但是在这种情况下,您也可以使用COALESCE(布尔表达式,0)
,就像“XOR”一样operator@hb因此,从现在起,您将能够识别XOR模式,这很好!
(risk_factor IN (R1, R2) AND R1 <> R2)