我需要对数据库进行大量更改。
有问题的记录具有“状态”列,仅当未记录某些状态时才需要更新。
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语句?
答案 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"