我正在尝试在具有大约 500,000 条记录和大约 50 或 60 列的表中创建查询。我需要的是将这些记录整理成组并选择每个组中的最大记录。
为了简化问题,我有一个表格如下
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 2 | 1004 | 2 | b |
| 3 | 1005 | 2 | c |
+----+-------------+----------+--------+
简单的group by如下
select * from temp GROUP BY group_id
返回
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 2 | 1004 | 2 | b |
+----+-------------+----------+--------+
不错,但不是我想要的。我想要的是每个组中最大 enternal_id 的整个记录。换句话说
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 3 | 1005 | 2 | c |
+----+-------------+----------+--------+
不知何故,我希望在这里放置一个 max(external_id) 语句来过滤所需的内容,但到目前为止我的所有调查都失败了。一些指导将不胜感激。重要的是,在返回 max(external_id) 时,选择整个记录作为路径列不同。