Проверьте, существует ли запись, верните неверный результат - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть таблица с именем match_lineup_substitute, в которой есть следующая запись:

player_substitute_id | player_substituted_id | match_id |
       90930                   NULL             2807486

Я хочу проверить, существует ли запись, поэтому я написал этот запрос:

SELECT COUNT(*) FROM `match_lineup_substitute` 
                WHERE match_id = 2807486 AND 
                player_substitute_id = 90930 AND player_substituted_id = null         

thisвернет: 0

что случилось?

Ответы [ 4 ]

0 голосов
/ 20 ноября 2018

NULL не является значением (см. «Значение неизвестно»), поэтому column = NULL всегда возвращает NULL.

NULL AND что-то возвращает NULL

Таким образом, ваше условие WHERE не возвращает TRUE (поскольку оно возвращает NULL), поэтому строка не выбрана.

Используйте взамен column IS NULL.

Примечаниечто то же самое верно, если сравнить два столбца: column1 = column2 будет NULL для каждой строки, где column1 или column2 равно NULL.

см. https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html

0 голосов
/ 20 ноября 2018

Изменить с

player_substituted_id = null 

на

player_substituted_id IS NULL 

Если вы хотите проверить значение null в поле, вы должны использовать IS NULL в предложении where.

0 голосов
/ 20 ноября 2018

В MySQL вы должны использовать IS NULL (или IS NOT NULL), чтобы оценить, является ли значение (или нет) нулем, вместо использования арифметических операторов сравнения.

В вашем примере вы должнызамените

AND player_substituted_id = null

на:

... AND player_substituted_id IS NULL 

Подробнее об этом можно прочитать в разделе Работа со значениями NULL официальной документации.

...

Для проверки на NULL используйте IS NULL и NOT NOT NULL операторы (...)

...

Вы не можете использовать арифметические операторы сравнения, такие как =, <или <>, для проверки на NULL.

0 голосов
/ 20 ноября 2018

Для проверки null значений используйте is

... and player_substituted_id IS NULL

DOC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...