我有一个表articles
,其中有字段id
,rating
(1-10之间的整数)和category_id
(表示它属于哪个类别的整数)。
如何在一个mysql查询中找到每个类别中评分最高的一篇文章?ORDER BY
和LIMIT
通常是我找到最热门文章的方式,我想,但我不确定如何将其与分组相结合,以获得所需的结果,如果我能的话。(依赖子查询可能是一个简单的答案,但是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/