我有一个具有以下结构的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中的分组内容不是很熟悉,所以如果你能在这里帮助我会很棒。
答案 0 :(得分:3)
查询包含子查询,它为每个message
获取最大 incident
。然后它的结果是根据两个条件连接到原始表本身,它与incident
和message
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