Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中的一种情况,但不是两种情况_Mysql_Case - Fatal编程技术网

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)