MySQL中是否有统计函数来查找列中最常用的值?

MySQL中是否有统计函数来查找列中最常用的值?,mysql,select,statistics,Mysql,Select,Statistics,嗨,有一种统计方法可以在表中的一列中找到最常用的发生值 对于此表: 表“资源”-M:M的链接表 +------------+---------------------+-----------+ | resource_pk| user_fk | supply_fk | +------------+---------------------+-----------+ | 1 | 124124 | 1 | | 2

嗨,有一种统计方法可以在表中的一列中找到最常用的发生值

对于此表:

表“资源”-M:M的链接表

+------------+---------------------+-----------+
| resource_pk| user_fk             | supply_fk |
+------------+---------------------+-----------+
| 1          | 124124              |     1     |
| 2          | 265235              |     2     |
| 3          | 253255              |     1     |
| 4          | 151255              |     1     |
| 5          | 154233              |     3     |
+------------+---------------------+-----------+
所以在这个例子中,最流行的供应是“1”

我想在该表中找到“supply_fk”列最常用的值

我试过这个:

Select *
From resource
Group By *
Order By supply_fk Desc
LEFT JOIN
supply
ON
supply.supply_pk = resource.supply_fk
然而,所有这些只是给我一个“supply_fk”,最大的数值是“3”,然后指向另一个给我“医疗剪刀”的表格

什么时候“1”应该是“手术刀”

我猜有MySQL的统计功能吗?我试着用谷歌搜索,但我得到的只是最小值、最大值和中间值

谢谢

试试这个:

SELECT supply_fk, MAX(c) AS m
FROM (SELECT supply_fk, COUNT(*) AS c
     FROM resource
     GROUP BY supply_fk)
GROUP BY supply_fk

编辑:忘记不能为字段使用保留名称。现已修复。

您可以在mysql中进行
计数。看见尝试执行类似“选择计数最高的位置”的操作。

您可以分组、按计数排序并获得第一条记录:

select r.supply_fk, s.name, count(*)
from resource r
inner join supply s on s.supply_pk = r.supply_fk
group by r.supply_fk, s.name
order by count(*) desc
limit 1
试一试

选择顶部(1)供应数量,从供应中选择供应数量(供应数量)作为供应数量 按供应分组 ORDER BY supply_fk_count desc

此查询提供“资源表中supply_fk列的最常用值”

选择fk作为关键点,计数(fk)作为数量 从mytable 按键分组 按数量说明订购 限值1


关于这一点的更多信息:

由于TS要求的是最受欢迎的一个,所以请按该数字订购,并限制为1。@Pelle或选择最大值。这会更快(如果ORDER BY和LIMIT 1未优化为最大值),因为排序比选择最大值花费的时间更长。Blast。我错过了你询问中最重要的一点。非常肯定MAX会更快。谢谢,“c”是什么意思?是的,您应该使用别名来处理ORDER BY子句中的COUNT(*)值
SELECT supply_fk, COUNT(*) as c FROM resources
   GROUP BY supply_fk ORDER BY c DESC LIMIT 1