Не работают MySQL и операторы не равны, что дает? - PullRequest
1 голос
/ 04 сентября 2010

У меня есть таблица T, в которой есть столбец A. A по умолчанию имеет значение NULL. Спустя 40 строк я изменил значение по умолчанию на 1. Три строки имели значение 2. Я попытался выбрать все строки, где столбец A, где нет 2, и установить для них новое значение по умолчанию 1 (что не произошло автоматически, когда я переделал таблицу). Я впервые попробовал:

update T set A=1 where A != 2;

Nada. Не сработало Выделено ноль строк. Далее я попробовал:

update T set A=1 where !(A=2);

Нет, там тоже ничего. Я попытался подключить их к выбору, чтобы увидеть, было ли что-то не так с обновлением, но они тоже ничего не возвращали. Справочное руководство по MySQL говорит, что! = И! являются действительными операторами и должны быть совершенно действительными в этом контексте. Я наконец достиг своей цели, используя IS NULL, но эти операторы должны сработать. Так что же дает? Почему это не сработало?

Я использую версию MySQL: 5.1.41-3ubuntu12.6 (Ubuntu)

1 Ответ

3 голосов
/ 04 сентября 2010

Попробуйте:

update T set A=1 where A != 2 or A is null; 

Сравнения с участием NULL оцениваются как NULL(UNKNOWN) и поэтому никогда не будут правдой.

...