我有一张评论表,看起来有点像这样
ID REVIEWITEM SCORE DATE
1 Object A 5.0 6-5-2012
2 Object A 7.0 6-5-2012
3 Object A 6.0 6-7-2012
4 Object B 4.0 7-1-2012
我希望有一个查询返回给我所有的评论,但如果评论是针对同一项目并且具有相同的日期,则只返回评分较高的评论。因此,例如上面的结果将是:
ID REVIEWITEM SCORE DATE
2 Object A 7.0 6-5-2012
3 Object A 6.0 6-7-2012
4 Object B 4.0 7-1-2012
我该怎么做?
答案 0 :(得分:6)
尝试一下,
SELECT a.*
FROM tableName a INNER JOIN
(
SELECT ReviewItem, `Date`, MAX(SCORE) maxScore
FROM tableName
GROUP BY ReviewItem, `Date`
) b ON a.reviewItem = b.reviewItem AND
a.score = b.maxScore AND
a.`date` = b.`date`
答案 1 :(得分:1)
SELECT * FROM table_name ORDER BY ID DESC, SCORE DESC GROUP BY REVIEWITEM, DATE
应该工作