首页 > 解决方案 > 使用多个 OR 语句更新

问题描述

我要对数据库进行大量更改。

有问题的记录有一个“状态”列,只有当某些状态没有记录时,我才需要更新它。

select `status`,`source_id` from vicidial_list where list_id = "444662" and source_id = "3791775X"

返回

status,source_id    
ADC,3791775X

ADC 是我更新期间应该忽略的状态

如果我跑

update `db`.`vicidial_list` set `status`='SUPR' where list_id = "444662" and source_id = "3791775X" and `status` != "ADC"

这有效,状态值不会更新。但是我有多个需要忽略的状态,所以我需要运行

update `db`.`vicidial_list` set `status`='SUPR' where list_id = "444662" and source_id = "3791775X" and `status` != "ASUPP" OR `status` !=  "ADC"

在此之后有多个 OR 语句。但是,如果我执行它然后运行我之前的选择语句

status,source_id    
SUPR,3791775X

即使我的 OR 语句应该阻止这种情况,该字段也已更新?

我显然遗漏了一些东西,我该如何在这个语句中添加多个 OR 语句?

标签: mysqlsql

解决方案


而不是OR你想使用AND. 例如,如果状态是'ASUPP',则不是'ADC'。那是一场比赛,并且该行得到更新。

另一种可能性是使用:

status NOT IN ('ASUPP',
               'ADC')

旁注:最好使用单引号将字符串括起来,以与标准和其他 DBMS 兼容。


推荐阅读