2

我有一个具有以下结构的 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价值的行。

所以采取上面的数据我想获取以下ids:2, 3, 5, 8

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

4

2 回答 2

3

查询有子查询,每个查询都获得最大值 。然后它的结果是根据两个条件与原始表本身进行连接,即它与 the和 themessageincidentincidentmessage

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
于 2012-11-16T11:34:03.133 回答
0

试试这个:

SELECT * FROM 
(SELECT * FROM tablename ORDER BY message DESC) AS A 
GROUP BY incident 
于 2012-11-16T11:58:44.790 回答