MySQLで条件に基づいてテーブルから一部の行のみを削除する方法
MySQLで条件に基づいてテーブルから一部の行のみを削除する方法
MySQLでは、DELETE文とWHERE句を組み合わせることで、テーブルから条件に合致する行だけを選択的に削除できます。WHERE句を指定しないとテーブル内のすべての行が削除されてしまうため、条件の指定は非常に重要です。ここでは、実際の例を使って手順を解説します。
1. テーブルの作成
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable
-> (
-> Id int,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.60 sec)
2. レコードの挿入
INSERTコマンドを使用して、テーブルに複数のレコードを挿入します。
mysql> insert into DemoTable values(100,'Bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(101,'Chris');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(102,'David');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(103,'Sam');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values(104,'Carol');
Query OK, 1 row affected (0.10 sec)
3. テーブルの内容を確認
SELECT文を使用して、テーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable;
以下の出力が得られます。
+------+-------+
| Id | Name |
+------+-------+
| 100 | Bob |
| 101 | Chris |
| 102 | David |
| 103 | Sam |
| 104 | Carol |
+------+-------+
5 rows in set (0.00 sec)
4. 条件に基づいて行を削除する
次に、Idが102より大きい行のみを削除するクエリを実行します。DELETE文にWHERE句を付けることで、特定の条件を満たす行だけを削除できます。
mysql> delete from DemoTable
-> where Id > 102;
Query OK, 2 rows affected (0.10 sec)
5. 削除後の確認
もう一度テーブルのレコードを確認してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。Idが103(Sam)と104(Carol)の2行が削除され、残りの3行のみが表示されています。
+------+-------+
| Id | Name |
+------+-------+
| 100 | Bob |
| 101 | Chris |
| 102 | David |
+------+-------+
3 rows in set (0.00 sec)
まとめと注意点
このように、DELETE文にWHERE句で条件を指定すれば、テーブル全体ではなく必要な行だけを安全に削除できます。ただし、WHERE句の指定を忘れるとテーブル内の全データが削除される危険があるため、実行前には必ずSELECT文で対象行を確認し、重要なデータの場合はバックアップを取っておくことをおすすめします。
-
MySQLで月ごとにテーブルの合計値を集計する方法
MySQLで日付データを月単位にグループ化して合計値を求めたい場合、GROUP BY句とMONTH()関数を組み合わせることで簡単に実現できます。この記事では、実際のサンプルを使いながら手順を詳しく解説します。1. サンプルテーブルの作成まず、購入日と金額を格納するテーブルを作成します。mysql> create table DemoTable1628 -> ( -> PurchaseDate date, -> Amount int -> ); Query OK, 0 rows affected (1.55 sec)2. テストデー
-
MySQLでテーブル内の特定の行だけを削除する方法|NOT IN()を使った実践テクニック
MySQLで特定の行以外を一括削除したい場合、NOT IN() 演算子を使用すると簡単に実現できます。NOT IN() は「指定した値のリストに含まれない行」を対象にできるため、残したい行のIDを列挙すれば、それ以外の行だけを効率よく削除できます。この記事では、サンプルテーブルを作成し、実際にデータを挿入してから、NOT IN() を使って特定の行のみを削除する手順を解説します。1. サンプルテーブルの作成まずは、StudentId を自動採番(AUTO_INCREMENT)に設定したテーブルを作成します。AUTO_INCREMENT=101 を指定することで、IDは101から順番に割り振られ