id | field_1 | field_2
1 | a | 1
2 | b | 1
SELECT id, field_1 FROM table GROUP BY field_2
これにより、id = 1の行が取得されます。最大のIDを持つ行を取得するにはどうすればよいですか?(field_1 = bを取得したい)。これを達成する最も簡単な方法はどれですか?
ご協力いただきありがとうございます!
SELECT t1.id, t1.field_1, t2.IdSum
FROM table t1
INNER JOIN
(
SELECT field_2, MAX(id) id, SUM(id) IdSum
FROM Table
GROUP BY field_2
) t2 on t1.id = t2.id
AND t1.field_2 = t2.field_2;
この式は、定義上、最初の行を取得しません。
SELECT id, field_1
FROM table
GROUP BY field_2
の値ごとに任意の行から値を取得しますfield2
。任意の行が最初の行である可能性がありますが、保証はありません。これを理解するには、非表示列のドキュメントを参照してください。
MySQLでは、最高のIDを持つ行を取得するために結合が必要です。これが1つの方法です:
select t.*
from t
where id = (select max(id) from t t2 where t2.field2 = t.field2)
これにより、field2の各値のIDが最も高いすべての行がフェッチされます。