1

我有一张看起来有点像这样的评论表

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

我该怎么做?

4

2 回答 2

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`

SQLFiddle 演示

于 2012-09-04T15:37:40.333 回答
1
SELECT * FROM table_name ORDER BY ID DESC, SCORE DESC GROUP BY REVIEWITEM, DATE

应该管用

于 2012-09-04T16:09:14.407 回答