обновить с помощью нескольких операторов ИЛИ

0

У меня есть большое количество изменений, которые нужно внести в базу данных.

Записи, о которых идет речь, имеют статус столбца, который мне нужно обновлять, только если определенные статусы не записываются.

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

возвращается

status,source_id    
ADC,3791775X

АЦП - это статус, который следует игнорировать во время моего обновления

если я забегу

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 ответа

2

Вместо OR вы хотите использовать AND. Например, если статус 'ASUPP', это не 'ADC'. То, что соответствие и строка обновляются.

Другая возможность - использовать:

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

Замечание: лучше использовать одинарные кавычки для включения строк, чтобы быть совместимыми со стандартной и другой СУБД.

1

Возможно, вам потребуется использовать AND вместо OR

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню