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