【发布时间】:2022-01-20 16:58:34
【问题描述】:
我正在使用如下示例表。一个数据集有多个组,每次写入表时,数据集的 RunNumber 以及每个组的数据和总数都会增加。每个数据集/组组合通常会有多行,示例如下:
| RunNumber | Group | Dataset | Total |
|---|---|---|---|
| 1 | Group1 | Dataset A | 10 |
| 1 | Group1 | Dataset A | 20 |
| 2 | Group1 | Dataset A | 30 |
| 2 | Group2 | Dataset A | 15 |
| 1 | Group1 | Dataset B | 5 |
| 1 | Group2 | Dataset B | 10 |
| 1 | Group3 | Dataset A | 30 |
| 2 | Group3 | Dataset A | 30 |
| 1 | Group1 | Dataset C | 15 |
| 1 | Group2 | Dataset C | 50 |
| 2 | Group2 | Dataset C | 70 |
| 2 | Group2 | Dataset C | 90 |
我想要做的对于数据集和组的每个组合都是必不可少的,返回具有给定数据集/组组合的 max(RunNumber) 的行的所有数据。例如,上面的示例将返回:
| RunNumber | Group | Dataset | Total |
|---|---|---|---|
| 2 | Group1 | Dataset A | 30 |
| 2 | Group2 | Dataset A | 15 |
| 1 | Group1 | Dataset B | 5 |
| 1 | Group2 | Dataset B | 10 |
| 2 | Group3 | Dataset A | 30 |
| 1 | Group1 | Dataset C | 15 |
| 2 | Group2 | Dataset C | 70 |
| 2 | Group2 | Dataset C | 90 |
在数据集/组匹配的情况下,所有行都保留给定组合的最大 RunNumber。 目前,我已将其拆分为 2 个单独的查询,其中我首先查询所有不同数据集/组组合的 max(RunNumber),然后对所有匹配项执行 select *。任何帮助将不胜感激,在此先感谢!
【问题讨论】:
-
您使用的是哪个 MySQL 版本?
-
@jarlh 使用 5.6
标签: mysql sql max greatest-n-per-group