MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでテーブル内の重複レコードをすべて削除する方法

MySQLのテーブルから重複レコードを削除したい場合、DELETEコマンドを使用します。この記事では、実際にテーブルを作成し、重複データを挿入したうえで、DELETE文を使って重複レコードを削除する手順を具体的に解説します。

1. テーブルの作成

まず、練習用のテーブル「DuplicateDeleteDemo」を作成しましょう。このテーブルは、id(整数型)とname(可変長文字列)の2つのカラムを持つシンプルな構造です。

mysql> create table DuplicateDeleteDemo
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.60 sec)

2. レコードの挿入

次に、「DuplicateDeleteDemo」テーブルにデータを挿入します。ここでは、意図的に「John」という同じレコードを3回追加しています。これにより、重複データが存在する状態を作り出します。

mysql> insert into DuplicateDeleteDemo values(1,'John');
Query OK, 1 row affected (0.11 sec)

mysql> insert into DuplicateDeleteDemo values(1,'John');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DuplicateDeleteDemo values(2,'Johnson');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DuplicateDeleteDemo values(1,'John');
Query OK, 1 row affected (0.14 sec)

3. 現在のレコードを確認する

テーブル内のすべてのレコードを表示するには、SELECT文を使用します。

mysql> select * from DuplicateDeleteDemo;

実行結果は以下のとおりです。「John」が3件重複していることが確認できます。

+------+---------+
| id   | name    |
+------+---------+
|    1 | John    |
|    1 | John    |
|    2 | Johnson |
|    1 | John    |
+------+---------+
4 rows in set (0.00 sec)

上記の出力を見ると、テーブルには合計4件のレコードが存在し、そのうち3件が重複レコードであることがわかります。

4. DELETE文で重複レコードを削除する

重複レコードを削除するには、WHERE句で条件を指定してDELETE文を実行します。ここでは、id=1のレコード(重複している「John」の3件)をまとめて削除します。

mysql> delete from DuplicateDeleteDemo where id=1;
Query OK, 3 rows affected (0.19 sec)

実行結果の「3 rows affected」から、3件のレコードが正常に削除されたことがわかります。

5. 削除後のレコードを確認する

レコードが正しく削除されたかどうかを確認するため、再度SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DuplicateDeleteDemo;

以下の出力のように、重複レコードがすべて削除され、「Johnson」の1件だけが残っていることが確認できます。

+------+---------+
| id   | name    |
+------+---------+
|    2 | Johnson |
+------+---------+
1 row in set (0.00 sec)

まとめ

このように、DELETE文とWHERE句を組み合わせることで、条件に一致する重複レコードを簡単に削除できます。ただし、この方法は削除対象の条件(idなど)が明確な場合に有効です。大量のデータや複雑な重複条件を扱う場合は、一時テーブルやGROUP BY句を活用した方法も検討するとよいでしょう。

  1. MySQLで重複レコードを含むテーブルから特定の値を1件だけ削除する方法

    MySQLでテーブル内のレコードを削除するにはDELETE文を使用します。しかし、同じ値の重複レコードが複数存在する場合に、そのうち1件だけを削除したいケースがあります。そんなときは、LIMIT句を組み合わせることで、削除対象の件数を制限できます。基本構文delete from yourTableName where yourColumnName=yourValue limit 1;この構文では、WHERE句で削除対象の条件を指定し、LIMIT 1によって該当するレコードのうち最初の1件のみを削除します。実際にテーブルを作成して確認してみようまず、サンプル用のテーブルを作成します。mysql&

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ