PHP MariaDB PDO подсчитывает повторяющиеся значения - PullRequest
0 голосов
/ 19 октября 2018

Возможно глупый вопрос, но я ничего не могу найти по нему.Я знаю, что вы можете делать подсчеты и некоторые основные математические с запросами.

Существует ли способ подсчета в базе данных и получения результатов с наибольшим или наименьшим числом вхождений?

Допустим, у вас есть все страницы библиотеки в базе данных, и вы хотелизнаю 5 самых популярных символов или, возможно, наименее использованных.

Полагаю, самым простым примером будет лотерея.Допустим, у вас была таблица результатов прошлых лотерей.Допустим, вы хотели вернуть список 10 самых популярных номеров.Допустим, числа могут варьироваться от 1 до 100.

Было бы не очень эффективно выполнить следующий запрос 100 раз, а затем запустить несколько php для сортировки данных.

    SELECT COUNT(*) FROM mytable WHERE ball=1

Наверняка должен быть способ вернуть счетчик наиболее дублированных данных.

Возможно, я слишком обдумываю это.В любом случае, спасибо за любую помощь в этом вопросе.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

вы можете просто использовать

SELECT column, COUNT(*) 
FROM mytable 
GROUP BY column_name

, при этом будут подсчитаны все существующие записи для конкретного столбца имя, которое вы должны использовать в столбце до COUNT(*), чтобы вы знали, что имеет столько значений.

Надеюсь, это поможет!

0 голосов
/ 19 октября 2018

Это называется группировкой, предложение group by позволит вам сделать это, убедитесь, что вы не просто извлекаете счетчик, но и то, что подсчитываете, в данном случае ball.

Получить наименьшее количество вхождений:

SELECT ball, COUNT(*) FROM mytable GROUP BY ball ORDER BY ball ASC limit 1;

Получить наименьшее количество вхождений:

SELECT ball, COUNT(*) FROM mytable GROUP BY ball ORDER BY ball DESC limit 1;

Если вы хотите, чтобы все они были в одном результате, вы можете использовать объединение / объединение всех:

(SELECT ball, COUNT(*) FROM mytable GROUP BY ball ORDER BY ball ASC limit 1)
UNION ALL
(SELECT ball, COUNT(*) FROM mytable GROUP BY ball ORDER BY ball DESC limit 1);
...