В SQL-запросе возвращено неверное значение с использованием WHERE и COUNT - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть столбец с именем category_id, и значением может быть число или ноль (123 или ноль, для каждой строки). Я должен выбрать общее (COUNT) идентификатора категории с нулевым значением, используя:

SELECT COUNT(category_id) 
FROM products 
WHERE category_id = NULL;

Возвращается 0 (неправильное значение).

Ответы [ 5 ]

0 голосов
/ 24 апреля 2018

Count (category_id) будет считать только те записи, где category_id не равен NULL. Для сравнения с NULL синтаксис SQL имеет вид «IS NULL», а не «= NULL».

Для подсчета общего использования:

SELECT COUNT(1) FROM products WHERE category_id IS NULL ;
0 голосов
/ 24 апреля 2018

Просто используйте IS NULL с category_id, как это

SELECT COUNT(category_id) 
FROM products 
WHERE category_id IS NULL;
0 голосов
/ 24 апреля 2018

используйте: category_id IS NULL в предложении where вместо category_id= NULL

0 голосов
/ 24 апреля 2018

COUNT является примером агрегатной функции, вам нужно использовать GROUP BY. Попробуйте это:

SELECT COUNT(category_id) AS n FROM products WHERE category_id IS NULL GROUP BY category_id
0 голосов
/ 24 апреля 2018

попробуйте с этим:

SELECT COUNT(category_id) FROM products WHERE category_id IS NULL;

Значение NULL не может сравниваться оператором '=', поэтому используйте ключевое слово 'IS' вместо '='

...