Tôi đang cố tạo truy vấn trong bảng có 500.000 bản ghi và một số 50 hoặc 60 cột. Những gì tôi cần là để đối chiếu các bản ghi này thành các nhóm và chọn bản ghi tối đa trong mỗi nhóm.MySQL chọn bản ghi tối đa trong nhóm theo
Để đơn giản hóa vấn đề tôi có một bảng như sau
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 2 | 1004 | 2 | b |
| 3 | 1005 | 2 | c |
+----+-------------+----------+--------+
Các nhóm đơn giản bằng cách như sau
select * from temp GROUP BY group_id
trả về
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 2 | 1004 | 2 | b |
+----+-------------+----------+--------+
Nice but không phải những gì tôi muốn . Những gì tôi muốn là toàn bộ hồ sơ cho max enternal_id trong mỗi nhóm. Nói cách khác
+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
| 1 | 1003 | 1 | a |
| 3 | 1005 | 2 | c |
+----+-------------+----------+--------+
Bằng cách nào đó tôi đang tìm cách đặt câu lệnh tối đa (external_id) vào đây để lọc những gì cần thiết nhưng cho đến nay tất cả điều tra của tôi đều thất bại. Một số hướng dẫn sẽ được đánh giá cao. Điều quan trọng là khi trả về giá trị max (external_id) mà toàn bộ bản ghi được chọn làm cột đường dẫn khác nhau.
Có lẽ sử dụng "chọn MAX (EXTERNAL_ID) AS tối đa, * từ tạm GROUP BY GROUP_ID" bạn có thể làm điều này. – PiLHA