帮助MySQL查询

时间:2011-03-15 06:22:15

标签: php mysql sql

我有一个包含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来执行此操作。也许这是子查询?

提前感谢您的帮助。

干杯

3 个答案:

答案 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;