【发布时间】:2021-06-30 18:03:17
【问题描述】:
给定以下简单表格:
+-----+-------------+---------+----+
| id_ | match_op_id | version | p1 |
+-----+-------------+---------+----+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 5 |
| 3 | 1 | 2 | 3 |
| 4 | 1 | 2 | 4 |
| 5 | 2 | 1 | 1 |
| 6 | 2 | 1 | 5 |
| 7 | 2 | 2 | 3 |
| 8 | 2 | 2 | 4 |
| 9 | 2 | 2 | 4 |
+-----+-------------+---------+----+
我想构建一个查询,从最大 version 和最大 p1 中为每个 match_op_id 选择单个记录的 match_op_id 和 p1 字段(不管是哪一个) .所以从上面我会得到输出:
+-------------+----+
| match_op_id | p1 |
+-------------+----+
| 1 | 4 |
| 2 | 4 |
+-------------+----+
在 SO 上的一些帖子之后,我构建了一个查询,用于选择 p1 字段为最大值的所有记录:
SELECT
odds_op.match_op_id, odds_op.p1
FROM
odds_op,
(SELECT
match_op_id, MAX(p1) AS p1
FROM
odds_op
GROUP BY match_op_id) AS max_p1
WHERE
odds_op.match_op_id = max_p1.match_op_id
AND odds_op.p1 = max_p1.p1
我现在不知道如何确保我只从最大 version 中选择最大 p1。我认为这可能是一个嵌套的子查询,但我无法弄清楚。我也知道我会在分组方面遇到一些问题,这样我就不会在每个match_op_id 上得到多个记录。任何帮助将不胜感激。
【问题讨论】:
-
更新您的问题添加适当的数据样本和预期结果
-
您在寻找“groupwise-max”吗?还是
ORDER BY .. LIMIT 1?