約 500,000 のレコードと約 50 または 60 の列を持つテーブルでクエリを作成しようとしています。私が必要とするのは、これらのレコードをグループにまとめて、各グループの最大レコードを選択することです。
問題を単純化するために、次のような表があります
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 2 | 1004 | 2 | b |
| 3 | 1005 | 2 | c |
+----+-------------+----------+--------+
単純なグループ化は次のとおりです
select * from temp GROUP BY group_id
返す
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 2 | 1004 | 2 | b |
+----+-------------+----------+--------+
素敵ですが、私が欲しいものではありません。私が欲しいのは、各グループの max enternal_id のレコード全体です。言い換えると
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 3 | 1005 | 2 | c |
+----+-------------+----------+--------+
どういうわけか、必要なものをフィルタリングするためにここに max(external_id) ステートメントを入れようとしていますが、これまでのところすべての調査が失敗しています。いくつかのガイダンスをいただければ幸いです。max(external_id) を返すときは、パス列が異なるため、レコード全体が選択されることが重要です。