MySQL - результаты «SELECT WHERE STH» и «SELECT WHERE NOT STH» не суммируются в полную таблицу - PullRequest
3 голосов
/ 27 декабря 2010

Как такое возможно, что результат этих 2 запросов:

SELECT * FROM `workers` WHERE `name` = 'Smith`

и

SELECT * FROM `workers` WHERE NOT `name` = 'Smith`

не суммируются во всю таблицу workers?

1 Ответ

7 голосов
/ 27 декабря 2010

Поскольку поле NULL в name не попадает ни в один запрос.

В троичной логике, которую использует SQL, NULL = 'Smith' и NOT NULL = 'Smith' оба оцениваются как NULL и фильтруютсяout.

Используйте NULL -защищенный оператор сравнения, <=>:

SELECT * FROM `workers` WHERE `name` <=> 'Smith`

и

SELECT * FROM `workers` WHERE NOT `name` <=> 'Smith`
...