mysql返回值更高的行

时间:2012-09-04 15:34:27

标签: mysql

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

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

我该怎么做?

2 个答案:

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

SQLFiddle Demo

答案 1 :(得分:1)

SELECT * FROM table_name ORDER BY ID DESC, SCORE DESC GROUP BY REVIEWITEM, DATE

应该工作