Функция COUNT
Функция COUNT подсчитывает количество записей в таблице. Условие, по которому будут выбираться записи, задается с помощью команды WHERE . Команда WHERE не является обязательной, если ее не указать — будут подсчитаны все записи в таблице.
Синтаксис
Подсчет всех записей:
SELECT COUNT(*) FROM имя_таблицы WHERE условие
Подсчет всех записей, где заданное поле не равно NULL:
SELECT COUNT(поле) FROM имя_таблицы WHERE условие
Только уникальные значения поля:
SELECT COUNT(DISTINCT поле) FROM имя_таблицы WHERE условие
Таблицы для примеров
id айди |
name имя |
age возраст |
salary зарплата |
---|---|---|---|
1 | user1 | 23 | 400 |
2 | user2 | 25 | 500 |
3 | user3 | 23 | 500 |
4 | user4 | 30 | 900 |
5 | user5 | 27 | 500 |
6 | user6 | 28 | 900 |
Пример
Давайте подсчитаем в таблице всех работников с возрастом 23 года:
SELECT COUNT(*) as count FROM employees WHERE age=23
Результат выполнения SQL запроса:
count результат подсчета |
---|
2 |
Пример
Давайте подсчитаем в таблице количество разных зарплат (их будет 3 штуки: 400 , 500 и 1000):
SELECT COUNT(DISTINCT salary) as count FROM employees
Результат выполнения SQL запроса:
count результат подсчета |
---|
3 |
Пример
Давайте подсчитаем в таблице одновременно количество разных возрастов и количество разных зарплат:
SELECT COUNT(DISTINCT age) as count1, COUNT(DISTINCT salary) as count2 FROM employees
Результат выполнения SQL запроса:
count1 количество возрастов |
count2 количество зарплат |
---|---|
5 | 3 |
Меняем таблицу для примеров
id айди |
name имя |
age возраст |
salary зарплата |
---|---|---|---|
1 | user1 | 23 | NULL |
2 | user2 | 25 | 500 |
3 | user3 | 23 | NULL |
Пример
Давайте подсчитаем количество всех записей:
SELECT COUNT(*) as count FROM employees
Результат выполнения SQL запроса:
count результат подсчета |
---|
3 |
А теперь подсчитаем количество зарплат, не равных NULL:
SELECT COUNT(salary) as count FROM employees
Результат выполнения SQL запроса:
count результат подсчета |
---|
1 |
Смотрите также
- команду DISTINCT ,
которая позволяет подсчитывать только уникальные значения поля - команду GROUP BY,
которая позволяет группировать записи
Как посчитать количество записей в таблице sql
Размещение сквозной ссылки
Способы подсчета количества записей в каждой из таблиц базы данных
В этой стате рассматриваются несколько способов, с помощью которых можно подсчитать количество записей в таблицах базы данных MS SQL Server
Способ 1: Поскольку приведенный ниже sql-код для подсчета количества записей использует таблицу sysindexes, его результат зависит от того, была ли обновлена статистика.
select substring(o.name, 1, 30) Table_Name ,i.rows Number_of_Rows
from sysobjects o
inner join sysindexes i
on (o.id = i.id)
where o.xtype = ‘u’
and i.indid < 2
order by o.name
В приведенном примере xtype = ‘u’ используется для выбора объектов типа «таблица», а использование indid < 2 гарантирует выборку всех таблиц (как имеющих, так и не имеющих индексы).
Способ 2: Следующий sql-код также может быть использован для определения количества записей в таблицах базы данных. Для подсчета числа строк этот sql-код использует функцию агрегации. Обрамление кавычками выбранного названия таблицы необходимо для обработки пробелов в названии (если такие названия существуют).
SET NOCOUNT ON
DECLARE tables_cursor CURSOR
FOR
SELECT name FROM sysobjects WHERE type = ‘U’ order by 1
OPEN tables_cursor
DECLARE @tablename varchar(50)
FETCH NEXT FROM tables_cursor INTO @tablename
WHILE (@@fetch_status <> -1)
BEGIN
select @tablename = quotename(@tablename, ‘[]’)
DECLARE @CMD VARCHAR(100)
PRINT @TABLENAME
SELECT @CMD = ‘ select count(*) from ‘+@tablename+’ ‘
EXEC (@CMD)
FETCH NEXT FROM tables_cursor INTO @tablename
END
DEALLOCATE tables_cursor
SET NOCOUNT OFF
Способ 3: Для решения поставленной задачи можно также использовать недокументированную хранимую процедуру sp_Msforeachtable. Sp_Msforeachtable сканирует все таблицы в определенной базе данных и выполняет указанную sql-команду (ы) для каждой из таблиц. Для подстановки имени таблицы используется символ «?».
sp_msforeachtable @command1= ‘print »?»’, @command2 = «select count(*) from ?»
Функция SQL COUNT()
Оператор SQL COUNT() — функция возвращающая количество записей (строк) таблицы. Запись функции с указанием столбца (синтаксис ниже) вернет количество записей конкретного столбца за исключением NULL записей.
Функция SQL COUNT() имеет следующий синтаксис:
COUNT(column_name)
Запись функции с указанием маски «*» вернет количество всех записей в таблице.
COUNT(*)
Примеры оператора SQL COUNT: Имеется следующая таблица Universities :
ID | UniversityName | Students | Faculties | Professores | Location | Site |
1 | Perm State National Research University | 12400 | 12 | 1229 | Perm | psu.ru |
2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu.ru |
3 | Novosibirsk State University | 7200 | 13 | 1527 | Novosibirsk | nsu.ru |
4 | Moscow State University | 35100 | 39 | 14358 | Moscow | msu.ru |
5 | Higher School of Economics | 20335 | 12 | 1615 | Moscow | hse.ru |
6 | Ural Federal University | 57000 | 19 | 5640 | Yekaterinburg | urfu.ru |
7 | National Research Nuclear University | 8600 | 10 | 936 | Moscow | mephi.ru |
Пример 1. Вывести число записей таблицы, используя оператор SQL COUNT:
SELECT COUNT(*)
FROM Universities
Пример 2. Найти количество университетов расположенных в Москве, используя оператор SQL COUNT:
SELECT COUNT(*) FROM Universities WHERE Location = 'Moscow'
Пример 3. Найти количество университетов с больше чем 20 факультетами, используя оператор SQL COUNT:
SELECT COUNT(*) FROM Universities WHERE Faculties > 20
Как определить количество строк в таблице в базе данных MySQL
Однажды я столкнулся с тем, что мне нужно было посчитать количество строк в таблице SQL, но многие из предлагаемых в интернете решений у меня не работали. И всё же я нашёл выход.
Способ 1. phpMyAdmin
Начнем с самого простого и очевидного. Допустим, вам не нужно использовать полученный результат в коде, а просто узнать количество строк, только и всего.
Тогда заходим в phpMyAdmin (localhost/tools/phpmyadmin — для Денвера, localhost/phpMyAdmin для MAMP), затем выбираем нужную базу данных, после этого выбираем таблицу, количество строк в которой нужно выяснить, и видим следующее сообщение:
Способ 2. COUNT
Вот так выглядит сам SQL-запрос:
SELECT COUNT(1) FROM название_таблицы
SQL-запрос с условием:
SELECT COUNT(1) FROM название_таблицы WHERE условие
Реализация на PHP:
$a = mysql_query("SELECT COUNT(1) FROM название_таблицы"); $b = mysql_fetch_array( $a ); echo $b[0]; // выведет число строк
Аналогичным образом сюда можно добавить условие. Тогда код выведет число строк в таблице, удовлетворяющих условию.
Способ 3. mysql_num_rows
Этот способ позволяет подсчитать количество строк результата запроса.
Например в WordPress посты хранятся в таблице wp_posts , таким образом мы можем узнать сколько записей (типов постов) хранится в базе данных в таблице MySQL. Этот код дан только для примера (или для случаев, когда среда WordPress не подгружена), так как в WordPress подключение к базе данных осуществляется через класс $wpdb.
/* * для начала подключимся к базе данных * возможно вы уже подключились к ней ранее * пользователь root и пустой пароль - настройки по умолчанию для Денвера */ $connect_db = mysqli_connect( "localhost", "root", "", "truemisha_database" ); /* * SQL запрос * у меня в качестве названия таблицы указана таблица с записями WordPress */ $posts = mysqli_query( $connect_db, "SELECT * FROM wp_posts" ); /* * задействуем функцию mysql_num_rows() */ $num_rows = mysqli_fetch_row( $posts )[0]; echo "Количество записей на вашем блоге WordPress: $num_rows \n";
В результат будут включены абсолютно все записи. А как узнать количество только тех, которые опубликованы? Для этого нам потребуется немного изменить SQL-запрос.
$posts = mysqli_query( $connect_db, "SELECT * FROM wp_posts WHERE post_status='publish'" );
Смотрите также
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.