Mysql,如何使用另一列的最大值对一组行进行分组?
Posted
技术标签:
【中文标题】Mysql,如何使用另一列的最大值对一组行进行分组?【英文标题】:Mysql, How to group a set of rows by using the max value of another column? 【发布时间】:2016-04-27 19:46:35 【问题描述】:我有一张表,其中可能有一行或多行的 key_property 列具有相同的值。
我想在 mysql 中构建一个查询,它返回一个集合,其中 key_property 的每个值仅代表其对应的一个行,并且 它还接收一个 key_property 过滤器 表示 like 句子,由另一列的最大值选择(例如,event_id)。
我怎样才能做到这一点?
更新:
以下是未过滤表的示例:
+--------------+--------+----------+
| key_property | others | event_id |
+--------------+--------+----------+
| abcd | B | 1 |
| abcd | A | 2 |
| defg | C | 3 |
| abcd | D | 4 |
| hijk | f | 4 |
+--------------+--------+----------+
在过滤器设置为“d”的情况下执行查询时,结果数据应如下所示:
+--------------+--------+----------+
| key_property | others | event_id |
+--------------+--------+----------+
| abcd | D | 4 |
| defg | C | 3 |
+--------------+--------+----------+
【问题讨论】:
dev.mysql.com/doc/refman/5.7/en/… 显示带有数据和结果的样本.. 你读过***.com/questions/7745609/… @codemonkeyliketab 我现在有,但它实际上并不能满足我的所有要求。我编辑了问题以使其更清楚。 在我看来,codemonkeyliketab 的建议加上额外的 where 条件key_property like '%d%'
会起作用
【参考方案1】:
SELECT *
FROM tab WHERE (key_property,event_id) IN
( SELECT key_property, MAX(event_id)
FROM tab
WHERE key_property like '%d%'
GROUP BY key_property
)
【讨论】:
@Daniel Calderon Mori 这应该按预期工作,不是吗?以上是关于Mysql,如何使用另一列的最大值对一组行进行分组?的主要内容,如果未能解决你的问题,请参考以下文章