按键分组并选择另一个键上具有最高值的键

时间:2012-11-16 11:31:58

标签: mysql sql group-by

我有一个具有以下结构的MySQL表

+----+----------+---------+
| id | incident | message |
+----+----------+---------+
| 1  | 3        | 1       |
| 2  | 3        | 2       |
| 3  | 5        | 1       |
| 4  | 6        | 0       |
| 5  | 6        | 4       |
| 6  | 6        | 1       |
| 7  | 7        | 1       |
| 8  | 7        | 2       |
+----+----------+---------+

这是简化的数据,但它是一样的。

我想要的是GROUP BY incident,但只获取message值最高的行。

因此,我采取上述数据,我想获取以下id s:2, 3, 5, 8

我做了一个GROUP BY incident ORDER BY message声明,但那不起作用。我对MySQL中的分组内容不是很熟悉,所以如果你能在这里帮助我会很棒。

2 个答案:

答案 0 :(得分:3)

查询包含子查询,它为每个message获取最大 incident。然后它的结果是根据两个条件连接到原始表本身,它与incidentmessage

匹配
SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT incident, MAX(message) maxM
            FROM tableName
            GROUP BY incident
        ) b ON a.incident = b.incident AND
                a.message = b.maxM

答案 1 :(得分:0)

试试这个:

SELECT * FROM 
(SELECT * FROM tablename ORDER BY message DESC) AS A 
GROUP BY incident