我有一个表articles,其中有字段idrating(1-10之间的整数)和category_id(表示它属于哪个类别的整数)。
如何在一个mysql查询中找到每个类别中评分最高的一篇文章?ORDER BYLIMIT通常是我找到最热门文章的方式,我想,但我不确定如何将其与分组相结合,以获得所需的结果,如果我能的话。(依赖子查询可能是一个简单的答案,但是ewww。有更好的吗?)
对于以下数据:

id | category_id | rating
---+-------------+-------
 1 |           1 |     10
 2 |           1 |      8
 3 |           2 |      7
 4 |           3 |      5
 5 |           3 |      2
 6 |           3 |      6

我想退货如下:
id | category_id | rating
---+-------------+-------
 1 |           1 |     10
 3 |           2 |      7
 6 |           3 |      6

最佳答案

试试这个

SELECT id, category_id, rating
FROM   articles a1
WHERE rating =
(SELECT MAX(a2.rating) FROM articles a2 WHERE a1.category_id = a2.category_id)


SELECT * FROM (SELECT * FROM articles ORDER BY rating DESC) AS a1 GROUP BY a1.rating;

关于sql - SQL:在每个类别中查找评分最高的文章,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4293930/

10-12 23:44