mysqlで重複するデータのクエリを1つだけ残す方法はどのように実現できますか?
重複データを検索して一意のレコードを残すには、次の手順を使用できます。
- 重複データを見つけ、1つのレコードのみを保持するために、GROUP BY句と集計関数を使用します。
- 重複データのレコードを選択するためにHAVING句を使用します。
- サブクエリや一時テーブルを使用して、重複データのレコードを保存し、プライマリキーまたはユニークインデックスを使用して重複データのレコードを削除します。
重複したデータを検索し、1つのレコードのみを残すためのサンプルSQLクエリ文を以下に示します。
SELECT MIN(id), column1, column2, column3
FROM your_table
GROUP BY column1, column2, column3
HAVING COUNT(*) > 1;
上記の例では、your_table が重複データを含むテーブルであると仮定する。column1、column2、column3 は重複データの列である。このSQL文は、重複するデータのグループごとに最小のid値を返し、一意なレコードを1つ保持する。
一つの選択肢:クエリ結果を一時テーブルに挿入し、元のテーブルから重複データを削除した後、一時テーブルのデータを元のテーブルに再挿入することもできます。これにより、重複データを削除して1レコードだけを残す効果が実現できます。