【问题标题】:Mysql, How to group a set of rows by using the max value of another column?Mysql,如何使用另一列的最大值对一组行进行分组?
【发布时间】: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    |
+--------------+--------+----------+

【问题讨论】:

标签: mysql


【解决方案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 这应该按预期工作,不是吗?
猜你喜欢
  • 2020-06-05
  • 2012-02-14
  • 2021-12-17
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
相关资源
最近更新 更多