MySQL COUNT () и нули - PullRequest
       4

MySQL COUNT () и нули

15 голосов
/ 30 августа 2009

Правильно ли я сказал:

COUNT(expr)
WHERE expr IS NOT *  

Будет ли учитываться только ненулевое значение?

Будет ли COUNT(*) всегда считать все строки? А что если все столбцы равны нулю?

Ответы [ 5 ]

22 голосов
/ 30 августа 2009

Правильно. COUNT (*) - это все строки в таблице, COUNT (выражение) - это то, где выражение не является ненулевым.

Если все столбцы имеют значение NULL (что указывает на то, что у вас нет первичного ключа, поэтому это не должно происходить в нормализованной базе данных) COUNT (*) still возвращает все вставленные строки. Просто не делай этого.

Вы можете думать о символе * как о значении «в таблице», а не «в любом столбце».

Это описано в Справочном руководстве MySQL .

13 голосов
/ 30 июня 2015

Если вы также хотите считать NULL, попробуйте

SELECT COUNT(IFNULL(col, 1)) FROM table;
5 голосов
/ 30 августа 2009

только что проверил:

выберите количество (*)

возвращает 1 с одной записью, заполненной пустыми значениями

выберите количество (поле)

возвращает 0.

Я не вижу точки в записи со значениями NULL. Такая запись не должна существовать.

2 голосов
/ 30 августа 2009

count(*) не для ненулевых столбцов, это просто способ просить подсчитать все строки. Примерно эквивалентно count(1).

0 голосов
/ 04 апреля 2019

Используя MySQL, я нашел этот простой способ:

SELECT count(ifnull(col,1)) FROM table WHERE col IS NULL;

Этот способ не будет работать:

SELECT count(col) FROM table WHERE col IS NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...