Как определить количество строк в таблице в базе данных 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. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
Как получить число в mysql
Для работы с числовыми данными MySQL предоставляет ряд функций:
-
ROUND : округляет число. В качестве первого параметра передается число. Второй параметр указывает на длину. Если длина представляет положительное число, то оно указывает, до какой цифры после запятой идет округление. Если длина представляет отрицательное число, то оно указывает, до какой цифры с конца числа до запятой идет округление
SELECT ROUND(1342.345, 2), -- 1342.35 (SELECT ROUND(1342.345, -2)); -- 1300;
SELECT TRUNCATE(1342.345, 2); -- 1342.34
SELECT ABS(-123) -- 123
SELECT CEILING(-123.45), -- -123 (SELECT CEILING(123.45)); -- 124
SELECT FLOOR(-123.45), -- -124 (SELECT FLOOR(123.45)); -- 123
SELECT POWER(5, 2), -- 25 (SELECT POWER(5, 3)); -- 125
SELECT SQRT(225); -- 15
SELECT SIGN(-5), -- -1 (SELECT SIGN(7)); -- 1
SELECT RAND(); -- 0.707365088352935 SELECT RAND(); -- 0.173808327956812
Например, возьмем таблицу:
CREATE TABLE Products ( Id INT AUTO_INCREMENT PRIMARY KEY, ProductName VARCHAR(30) NOT NULL, Manufacturer VARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price DECIMAL NOT NULL );
Округлим произведение цены товара на количество этого товара:
SELECT ProductName, ROUND(Price * ProductCount, 2) FROM Products;
Mysql: Как получить значение offset?
Допустим интересует запись с Как получить значение смещения для этой записи в этом запросе? Нужна не сама запись, нужно именно смещение.
Дешевые домены для дорвеев и не только — от 55р (https://goo.gl/Wtnwqp)
На сайте с 05.06.2009
2 декабря 2015, 10:53
Если я правильно понял суть вопроса, то так:
SELECT COUNT(*) AS `count` FROM `table1` WHERE `id`
На сайте с 17.08.2012
2 декабря 2015, 11:18
LovelAss, да, правильно. А если условия выборки посложнее примера? Уточню. Есть некая выборка — условия выборки любые, вплоть до самых неожиданных. В выборке есть интересующая строка. Как получить смещение этой строки средствами мускула?
На сайте с 02.04.2009
2 декабря 2015, 11:22
sidorka, «смещение» это сферическое понятие в вакууме. Вы что хотите сделать?
На сайте с 22.08.2012
2 декабря 2015, 11:31
sidorka:
LovelAss, да, правильно. А если условия выборки посложнее примера?
Уточню. Есть некая выборка — условия выборки любые, вплоть до самых неожиданных. В выборке есть интересующая строка. Как получить смещение этой строки средствами мускула?
точно так же, как Вам написали выше. Для любого запроса COUNT(*) работает.
Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
На сайте с 22.12.2007
2 декабря 2015, 11:41
proksey-net:
точно так же, как Вам написали выше. Для любого запроса COUNT(*) работает.
Если есть GROUP BY, то для задачи не то покажет. А смещение от чего вообще считать то нужно и зачем?
TizerDivision ( https://tizerdivision.ru ) — монетизируй сайт эффективно.
На сайте с 22.08.2012
2 декабря 2015, 11:44
f4llou7:
Если есть GROUP BY, то для задачи не то покажет. А смещение от чего вообще считать то нужно и зачем?
если есть GROUP BY, значит считываем id записи (или какой там primary-ключ), а потом:
SELECT COUNT(*) AS `count` FROM `table1` WHERE `id` На сайте с 17.08.2012 2 декабря 2015, 11:52siv1987, смещение - это offset. Нужно по смещению записи в выборке из одной таблице выбрать запись из другой таблицы с таким же смещением. f4llou7, от начала выборки вестимо. proksey-net, А если так?
SELECT . WHERE a>b, ba+b Тут просто сферическая выборка в вакууме, в которой находится интересующая строка. На сайте с 22.08.2012 2 декабря 2015, 11:56 sidorka:
proksey-net, А если так?
SELECT COUNT(id) FROM table WHERE id<(SELECT id FROM table WHERE a>b, ba+b LIMIT 1) На сайте с 02.04.2009 2 декабря 2015, 12:02 sidorka:
siv1987, смещение - это offset. Спасибо кэп. А то я не знал как это звучит на английском.sidorka:
Нужно по смещению записи в выборке из одной таблице выбрать запись из другой таблицы с таким же смещением.Для выбора записи из другой таблицы используется идентификатор (внешний ключ) или информация на его основе, смещение применяется редко - это сферическое значение которое зависит от типа сортировки и условия отбора. Вам зачем это нужно?
На сайте с 17.08.2012 2 декабря 2015, 12:25 siv1987:
Вам зачем это нужно?sidorka:
Нужно по смещению записи в выборке из одной таблице выбрать запись из другой таблицы с таким же смещением.Разверну описание задачи все же. Есть ключ, например id, но может и любой другой, составной скажем или на что фантазии хватит. Есть запрос некий - сферический в вакууме, не суть важно. В выборке по этому запросу однозначно присутствует строка с искомым ключом. Требуется найти ее смещение от начала выборки. proksey-net, а если ключ составной?
siv1987:
Вам зачем это нужно?sidorka:
Нужно по смещению записи в выборке из одной таблице выбрать запись из другой таблицы с таким же смещением.Разверну описание задачи все же. Есть ключ, например id, но может и любой другой, составной скажем или на что фантазии хватит. Есть запрос некий - сферический в вакууме, не суть важно. В выборке по этому запросу однозначно присутствует строка с искомым ключом. Требуется найти ее смещение от начала выборки. proksey-net, а если ключ составной?
Получить число из таблицы
Доброго времени суток.
Есть задача - удалить из таблицы все строки, где значение "Delivery_cost" меньше среднего в этом столбце.Искал и нашел 2 таких кусочка, по-отдельности они работают:
Вывод среднего значения:SELECT AVG(Delivery_cost) FROM Manufacturers;mysql> SELECT AVG(Delivery_cost) FROM Manufacturers; +--------------------+ | AVG(Delivery_cost) | +--------------------+ | 329.5000 | +--------------------+ 1 row in set (0.00 sec)Удаление строк, где значение "Delivery_cost" меньше константы:
1 2 3DELETE FROM Manufacturers WHERE Delivery_cost 350;А вот при попытке объединить эти 2 запроса ругается:
1 2 3DELETE FROM Manufacturers WHERE Delivery_cost SELECT AVG(Delivery_cost) FROM Manufacturers;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT AVG(Delivery_cost) FROM Manufacturers' at line 3Помогите, пожалуйста, сделать это правильно.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:Получить новую таблицу путём умножения элементов исходной таблицы на заданное число
Создайте приложение с двумя таблицами и компонентами Edit. В первом компоненте Edit задается число.
Дано целое двухзначное число a. Получить наибольшее число, которое можно получить из цифр числа a
Дано целое двухзначное число a. Получить наибольшее число, которое можно получить из цифр числа a.
Получить число, приписав к нему такое же число , а потом число в обратном порядке
Дано натуральное число. Получить новое, приписав к нему такое же число , а потом число в обратном.614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
Сообщение было отмечено Jen948 как решение
Решение
Можно попробовать так:
1 2 3SET @avg = 0; SELECT @avg := AVG(Delivery_cost) FROM Manufacturers; DELETE FROM Manufacturers WHERE Delivery_cost @avg;87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесьОпределить, сколько раз нужно число А разделить на число И што бы получить число С
помогите рещит тексты заданий перепечатываем на форум. для формул есть редактор читайте правила.Получить значения таблицы, где есть одни записи из другой таблицы, но нет других
Добрый вечер. Дело в том, что у меня не получается написать запрос к базе, где есть связка.
Как по имени таблицы получить список имен и типов полей таблицы в entity framework?
У меня есть библиотека сделанная с использованием ADO.NET. В ней для получения списка наименований.Получить объекты таблицы из таблицы sys.objects(Type U)
Привет Создал функцию, получаю данные о таблице (по ее ID) Имея данные таблицы, нужно.Или воспользуйтесь поиском по форуму:

