Я правильно сказал:MySQL COUNT() и обнуляет
COUNT(expr)
WHERE expr IS NOT *
будет рассчитывать только дополнительные аннулирует?
Будет COUNT(*)
всегда считать все строки? И что, если все столбцы равны нулю?
Я правильно сказал:MySQL COUNT() и обнуляет
COUNT(expr)
WHERE expr IS NOT *
будет рассчитывать только дополнительные аннулирует?
Будет COUNT(*)
всегда считать все строки? И что, если все столбцы равны нулю?
Исправить. COUNT (*) - это все строки в таблице, COUNT (выражение) - это выражение, в котором выражение не равно null.
Если все столбцы NULL (что указывает на то, что у вас нет первичного ключа, так что это не должно происходить в нормализованной базе данных) COUNT (*) еще возвращает все вставленные строки. Просто не делай этого.
Вы можете представить символ * как значение «в таблице», а не «в любой колонке».
count(*)
не для непустых столбцов, это просто способ запросить подсчет всех строк. Примерно эквивалентен count(1)
.
только что проверил:
SELECT COUNT (*)
возвращает 1 с одной записью, заполненной нулями
выберите кол (поле)
возвращает 0.
Я не Не видите точку в записи со значениями NULL. Такая запись не должна существовать.
«Я не вижу смысла в записи с значениями NULL». о, это только пришло мне в голову. теперь, когда вы говорите, что я понял, что вы правы, не подумал об этом, когда я спросил. – iceangel89
Если вы хотите посчитать NULLs, а также, попробуйте
SELECT COUNT(IFNULL(col, 1)) FROM table;
Отличное дополнение @Roey –
Есть ли способ подсчета аннулирует тоже с COUNT (Expression)? –
Если вы выполняете COUNT (*), то все строки учитываются независимо от содержимого этих строк. Если вы хотите видеть как полные строки *, так и * количество строк со значениями для SomeColumn, сделайте SELECT COUNT (*) как AllRows, COUNT (SomeColumn) как SomeColumnCount. AllRows будет полными строками, возвращаемыми запросом, а SomeColumnCount будет количеством строк, где значение SomeColumn имеет значение. – Godeke