我有一个包含id,username和food_id列的用户表。这个想法是用户存储他们最喜欢的食物,我们想出了一个食物联盟表,我想生成每种食物类型的最高投票报告。我正在使用MySQL和PHP。
为清楚起见,这是表格的一个例子:
id food_id username
1 1 Bob
2 100 Jane
3 200 Andy
4 1 Maggy
5 100 Rich
6 100 Mick
7 1 Kevin
如何编写查询以列出投票最多的食物。我想将结果限制为x数,比如前100位。在这种情况下,我希望结果如下:
food_id得分 1 3 100 4
我希望这个问题足够明确。查询超出了我的要求,但我确信必须能够以某种方式使用DISTINCT和COUNT来执行此操作。也许这是子查询?
提前感谢您的帮助。
干杯
富
答案 0 :(得分:2)
select food_id, count(*) score
from myTable
group by food_id
order by score desc limit 100
SELECT F.food_name,
COUNT(*) AS score
FROM myTable AS M
INNER JOIN food_table AS F
ON F.food_id = M.food_id
GROUP BY F.food_name
ORDER BY score DESC limit 100
答案 1 :(得分:1)
select count(*) as top100 from table group by food_id order by top100 desc limit 100
答案 2 :(得分:1)
SELECT f.`food_id`, COUNT(*) AS `count`
FROM `fav_food_table` f
GROUP BY f.`food_id`
ORDER BY `count` DESC
LIMIT 100;