← Все вопросы

Как посчитать количество строк в таблице (COUNT)?

Задан 19 месяцев назад996 просмотров2 ответа
8

Хочу узнать, сколько всего записей в таблице пользователей, и сколько из них с заполненным email. Как посчитать количество строк в SQL? В чём разница между COUNT(*) и COUNT(столбец)?

2 ответа

13
✓ Принятый ответ — помог автору

Количество строк считает агрегатная функция COUNT:

SELECT COUNT(*) FROM users;

Это вернёт общее число строк в таблице.

Ключевое различие:

  • COUNT(*) — считает все строки, включая те, где есть NULL.
  • COUNT(email) — считает только строки, где email НЕ NULL.

Поэтому, чтобы узнать, у скольких пользователей заполнен email:

SELECT COUNT(email) FROM users;

Если в таблице 100 строк, но у 30 email пустой (NULL), то COUNT(*) даст 100, а COUNT(email) — 70.

Ещё вариант — COUNT(DISTINCT столбец) считает количество уникальных значений:

SELECT COUNT(DISTINCT city) FROM users;

Частая ошибка: думать, что COUNT(0) или COUNT(1) считают иначе. На самом деле COUNT(1) — это «посчитай строки, где константа 1 не NULL», то есть всё равно все строки, как и COUNT(*). Разницы в скорости в современных СУБД практически нет, пишите COUNT(*) — это понятнее.

4

Дополню про пустой результат: если в таблице ноль строк, COUNT(*) вернёт 0, а не NULL и не пустую выборку — будет одна строка со значением 0. Это удобно отличает COUNT от других агрегатов: например, SUM по пустой таблице вернёт именно NULL, а COUNT всегда даёт число.

Ваш ответ

, чтобы ответить на вопрос.