查找mysql中最流行的
我的桌子是空的查找mysql中最流行的,mysql,sql,Mysql,Sql,我的桌子是空的 f1(drinker,shop) 表中列出了饮酒者和他们光顾的商店。我需要找到最受欢迎的商店。我知道我可以做一个简单的商店分组,按降序排序,并将结果限制为1,但我的疑问是,如果两个或两个以上的商店拥有相同数量的饮酒者,那么我的查询将失败。我不能使用限制2或3,因为我想这样做一个通用的工作查询,而不是一个特定于数据的查询。我已经没有想法了 注: 请不要这样表示: select shop from f1 group by shop order by count(*) desc li
f1(drinker,shop)
表中列出了饮酒者和他们光顾的商店。我需要找到最受欢迎的商店。我知道我可以做一个简单的商店分组,按降序排序,并将结果限制为1,但我的疑问是,如果两个或两个以上的商店拥有相同数量的饮酒者,那么我的查询将失败。我不能使用限制2或3,因为我想这样做一个通用的工作查询,而不是一个特定于数据的查询。我已经没有想法了
注:
请不要这样表示:
select shop from f1 group by shop order by count(*) desc limit 1
在这种情况下,您必须比较计数。使用
分组方式查询时不太好看
查询:
select shop
from f1
group by shop
having count(*) = (select max(cnt)
from (select count(*) as cnt
from f1
group by shop
) s
);
也可以作为子查询执行此操作:
select shop
from f1 join
(select count(*) as cnt
from f1
group by shop
order by count(*) desc
limit 1
) f1max
group by shop
having count(*) = max(f1max.cnt);