php - PHP MariaDB PDO 计算重复值
问题描述
也许是一个愚蠢的问题,但我找不到任何东西。我知道您可以通过查询进行计数和一些基本数学运算。
有没有办法让数据库计数并返回出现次数最多或最少的结果?
假设您在数据库中拥有图书馆的所有页面,并且您想知道使用的前 5 个字符或最少使用的字符。
我想最简单的例子就是彩票。假设您有一张过去的彩票结果表。假设您想要返回前 10 个抽奖次数最多的数字列表。假设数字的范围从 1 到 100。
运行以下查询 100 次不同的时间然后运行一些 php 对数据进行排序并不是很有效。
SELECT COUNT(*) FROM mytable WHERE ball=1
当然,必须有一种方法可以返回重复数据最多的计数。
也许我想多了。无论如何,感谢您对此事的任何帮助。
解决方案
这就是所谓的分组,该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);
推荐阅读
- express - apollo-server-express,graphql 自定义模式指令
- scikit-image - skimage treshold_local 不适用于使用 io.imread 加载的图片
- neo4j - 创建 Neo4j 后无法访问属性值
- ios - iOS 13 - 我们可以在启动故事板上使用 xib 作为启动屏幕吗?
- google-analytics - 如何在 Google Analytics 中按大小和/或设备过滤浏览器分辨率?
- java - JSON Jackson将多个键反序列化到同一字段中
- javascript - 使用 lodash cond 获取某个分支
- r - 重新调整ggplot中的水平轴
- python-3.x - TypeError: ord() 期望一个字符,但找到长度为 5 的字符串
- laravel - “前任”的形式和可用性