Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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
或内部case语句未在mysql中运行_Mysql_Sql_Sql Update - Fatal编程技术网

或内部case语句未在mysql中运行

或内部case语句未在mysql中运行,mysql,sql,sql-update,Mysql,Sql,Sql Update,我有一个查询,在case语句中我放了一个or语句 由于某种原因,or语句未运行 例如— update shouts set visibility=(case when (visibility = null or visibility =1) then 2 else 1 end) where shout_id = 788 现在,当可见性为null时,它应该更新2,而不知道为什么它会将字段更新为1。在与null进行比较时,使用is操作符。因为在使用普通运算符时,将某些内容与NULL进行比较将

我有一个查询,在case语句中我放了一个or语句

由于某种原因,or语句未运行

例如—

 update shouts set visibility=(case when (visibility = null or visibility =1) 
 then 2 else 1 end) where shout_id = 788

现在,当可见性为null时,它应该更新2,而不知道为什么它会将字段更新为1。

在与
null
进行比较时,使用
is
操作符。因为在使用普通运算符时,将某些内容与
NULL
进行比较将导致未知,这是不正确的


NULL
进行比较时,请使用
IS
运算符。因为在使用普通运算符时,将某些内容与
NULL
进行比较将导致未知,这是不正确的


NULL
进行比较时,请使用
IS
运算符。因为在使用普通运算符时,将某些内容与
NULL
进行比较将导致未知,这是不正确的


NULL
进行比较时,请使用
IS
运算符。因为在使用普通运算符时,将某些内容与
NULL
进行比较将导致未知,这是不正确的


我想指出,您可以简化逻辑:

update shouts
    set visibility = (case when visibility <> 1 then 1 else 2 end) 
    where shout_id = 788;
更新喊声
设置可见性=(可见性为1时为1,其余为2时为结束)
其中shout_id=788;
甚至:

update shouts
    set visibility = 2 - (visibility <> 1) 
    where shout_id = 788;
更新喊声
设置可见性=2-(可见性1)
其中shout_id=788;

不过,Juergen的方法是解决特定问题的正确方法。

我想指出,您可以简化逻辑:

update shouts
    set visibility = (case when visibility <> 1 then 1 else 2 end) 
    where shout_id = 788;
更新喊声
设置可见性=(可见性为1时为1,其余为2时为结束)
其中shout_id=788;
甚至:

update shouts
    set visibility = 2 - (visibility <> 1) 
    where shout_id = 788;
更新喊声
设置可见性=2-(可见性1)
其中shout_id=788;

不过,Juergen的方法是解决特定问题的正确方法。

我想指出,您可以简化逻辑:

update shouts
    set visibility = (case when visibility <> 1 then 1 else 2 end) 
    where shout_id = 788;
更新喊声
设置可见性=(可见性为1时为1,其余为2时为结束)
其中shout_id=788;
甚至:

update shouts
    set visibility = 2 - (visibility <> 1) 
    where shout_id = 788;
更新喊声
设置可见性=2-(可见性1)
其中shout_id=788;

不过,Juergen的方法是解决特定问题的正确方法。

我想指出,您可以简化逻辑:

update shouts
    set visibility = (case when visibility <> 1 then 1 else 2 end) 
    where shout_id = 788;
更新喊声
设置可见性=(可见性为1时为1,其余为2时为结束)
其中shout_id=788;
甚至:

update shouts
    set visibility = 2 - (visibility <> 1) 
    where shout_id = 788;
更新喊声
设置可见性=2-(可见性1)
其中shout_id=788;

Juergen's是解决特定问题的正确方法,尽管如此。

Try
visibility IS null
yup有时混淆更新应为=null,查询应为
IS null
Try
visibility IS null
yup有时混淆更新应为=null,查询应为
IS null
Try
visibility IS null
yup有时混淆更新应为=null,且查询应该是
is null
Try
visibility is null
是的,更新应该是=null,查询应该是
is null
欣赏第一个代码。对于第二个,有一个混淆,当可见性为2时,2-2=0,当可见性为null时,2-null将给出2。@PradyutBhattacharya。表达式
visibility 1
是一个布尔表达式。如果为true,则其值为
1
,如果为false,则将其视为
0
。请欣赏第一个代码。对于第二个,有一个混淆,当可见性为2时,2-2=0,当可见性为null时,2-null将给出2。@PradyutBhattacharya。表达式
visibility 1
是一个布尔表达式。如果为true,则其值为
1
,如果为false,则将其视为
0
。请欣赏第一个代码。对于第二个,有一个混淆,当可见性为2时,2-2=0,当可见性为null时,2-null将给出2。@PradyutBhattacharya。表达式
visibility 1
是一个布尔表达式。如果为true,则其值为
1
,如果为false,则将其视为
0
。请欣赏第一个代码。对于第二个,有一个混淆,当可见性为2时,2-2=0,当可见性为null时,2-null将给出2。@PradyutBhattacharya。表达式
visibility 1
是一个布尔表达式。如果为true,则其值为
1
,如果为false,则将其视为
0