首页 > 解决方案 > PHP MariaDB PDO 计算重复值

问题描述

也许是一个愚蠢的问题,但我找不到任何东西。我知道您可以通过查询进行计数和一些基本数学运算。

有没有办法让数据库计数并返回出现次数最多或最少的结果?

假设您在数据库中拥有图书馆的所有页面,并且您想知道使用的前 5 个字符或最少使用的字符。

我想最简单的例子就是彩票。假设您有一张过去的彩票结果表。假设您想要返回前 10 个抽奖次数最多的数字列表。假设数字的范围从 1 到 100。

运行以下查询 100 次不同的时间然后运行一些 php 对数据进行排序并不是很有效。

    SELECT COUNT(*) FROM mytable WHERE ball=1

当然,必须有一种方法可以返回重复数据最多的计数。

也许我想多了。无论如何,感谢您对此事的任何帮助。

标签: phppdocountduplicatesmariadb

解决方案


这就是所谓的分组,该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);

推荐阅读