用多个OR语句更新

时间:2018-08-02 09:48:59

标签: mysql sql

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

有问题的记录具有“状态”列,仅当未记录某些状态时才需要更新。

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语句。但是,如果我执行该命令,然后运行我之前的select语句

status,source_id    
SUPR,3791775X

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

我显然缺少了一些东西,如何向该语句添加多个OR语句?

2 个答案:

答案 0 :(得分:2)

您要使用OR而不是AND。例如,如果状态为'ASUPP',则不是'ADC'。这是匹配项,并且该行会更新。

另一种可能性是使用:

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

附带说明:最好在字符串中使用单引号,以与标准和其他DBMS兼容。

答案 1 :(得分:1)

您可能需要使用AND而不是OR

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