Содержание
Функция COUNT()
Функция COUNT()
возвращает количество записей в таблице, соответствующих заданному критерию.
Функция COUNT(expr)
всегда считает только те строки, у которых результатом выражения expr
является NOT NULL
.
Исключением из этого правила является использование функции COUNT()
со звездочкой в качестве аргумента — COUNT(*)
. В этом случае считаются все строки, вне зависимости от того, NULL
они или NOT NULL
.
Например, функция COUNT(*)
возвращает общее количество записей в таблице:
SELECT COUNT(*) FROM table_name
Как посчитать количество записей и вывести на экран
Пример PHP+MySQL-кода для подсчета и вывода общего количества строк:
<?php> $res = mysql_query("SELECT COUNT(*) FROM table_name") $row = mysql_fetch_row($res); $total = $row[0]; // всего записей echo $total; ?>
Этот пример иллюстрирует самый простой вариант использования функции COUNT()
. Но с помощью этой функции можно выплнять и другие задачи.
Указав определенный столбец таблицы в виде параметра, функция COUNT(column_name)
возвращает количество записей этого столбца, которые не содержат значение NULL
. Записи со значениями NULL
игнорируются.
SELECT COUNT(column_name) FROM table_name
Использовать функцию mysql_num_rows()
нельзя, потому что для того, чтобы узнать общее количество записей, нужно выполнить запрос SELECT * FROM db
, то есть получить все записи, а это нежелательно, поэтому предпочтительнее использовать функцию count
.
$result = mysql_query("SELECT COUNT (*) as rec FROM db");
Использование функции COUNT() на примере
Вот еще один пример использования функции COUNT()
. Допустим, есть таблица ice_cream
с каталогом мороженого, в которой находятся идентификаторы категорий и названия мороженого:
id | name |
---|---|
1 | «Пломбир № 1» |
1 | 100% мороженое |
1 | Эскимо № 1 |
2 | «Румба» |
2 | «Фрутсок» |
Задача: Нужно посчитать, сколько наименований мороженого содержится в каждой категории.
Решение этой задачи очевидно:
SELECT id, COUNT(*) FROM ice_cream GROUP BY id
Результат:
id | count |
---|---|
1 | 3 |
2 | 2 |
Если надо вывести населенный пункт и количество населенных пунктов в городе, то можно воспользоваться таким кодом:
SELECT tab1.subcity,COUNT(tab2.city) FROM tab1 LEFT JOIN tab2 ON tab1.subsity = tab2.subcity
Резюме
Соответственно, для решения более сложных задач в функцию COUNT()
можно подставить выражение, возвращающее NULL
или NOT NULL
. Если строку нужно посчитать — выражение должно возвращать NOT NULL
.