テーブル構造があります:
ID1 (int), ID2 (int), AddedAt (datetime)
ここで、ID1とID2は主キーです。現在、このテーブルにはすでに最大300,000 のレコードが含まれており、1 対 1 の関係を持つようにテーブルを再構築する必要があります。つまり、 ID1を主キーから削除し、ID2 のみを主キーにする必要がありますが、ID1ごとに複数のID2を既に含むレコードがあります。
その前に、複数のID2が存在するすべてのレコードを選択して削除するクエリが必要です。ID2 のレコードを 1 つだけ残す必要があり、そのレコードは、AddedAt datetime列によって決定される最新のレコードである必要があります。
これは私がこれまでに持っているものです:
SELECT *, COUNT(*) AS Total
FROM TestTable
GROUP BY ID2
HAVING Total > 1
これはすべてのレコードを正常に返しますが、AddedByは最新のものにはなりません。ID2 を主キーにできるように、ID2 でグループ化された最新のレコードを 1 つだけ取得するには、このクエリに何を追加する必要がありますか。
これが MySQL で実行できない場合、PHP で実行できますか?