1
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を取得したい)。これを達成する最も簡単な方法はどれですか?

ご協力いただきありがとうございます!

4

2 に答える 2

2
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;
于 2013-01-15T14:17:05.157 に答える
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が最も高いすべての行がフェッチされます。

于 2013-01-15T14:28:44.523 に答える