MySQLテーブルからWHERE句に複数条件(列=値 AND 列2=値2)を指定してレコードを削除する方法
MySQLでは、DELETE文のWHERE句にAND演算子を組み合わせることで、「列1が指定した値と一致し、かつ列2も別の値と一致する」という複数条件を満たすレコードだけをピンポイントで削除できます。本記事では、実際のサンプルコードを使いながら手順をわかりやすく解説します。
1. サンプルテーブルを作成する
まずは動作確認用のテーブルを作成しましょう。以下では、学生ID・氏名・年齢を持つテーブル「DemoTable722」を定義しています。
mysql> create table DemoTable722 (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(100),
StudentAge int
);
Query OK, 0 rows affected (1.84 sec)
2. テストデータを挿入する
INSERTコマンドを使って、いくつかのレコードを登録します。
mysql> insert into DemoTable722(StudentName,StudentAge) values('Chris Brown',23);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable722(StudentName,StudentAge) values('John Smith',21);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable722(StudentName,StudentAge) values('David Miller',22);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable722(StudentName,StudentAge) values('Adam Smith',20);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable722(StudentName,StudentAge) values('Carol Taylor',24);
Query OK, 1 row affected (0.39 sec)
3. 登録されたレコードを確認する
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DemoTable722;
実行結果は以下のとおりです。
+-----------+--------------+------------+ | StudentId | StudentName | StudentAge | +-----------+--------------+------------+ | 1 | Chris Brown | 23 | | 2 | John Smith | 21 | | 3 | David Miller | 22 | | 4 | Adam Smith | 20 | | 5 | Carol Taylor | 24 | +-----------+--------------+------------+ 5 rows in set (0.00 sec)
4. WHERE句に複数条件を指定してDELETEを実行する
ここが本題です。「StudentIdが3」かつ「StudentNameが'David Miller'」という2つの条件をANDで結合し、該当レコードを削除します。
mysql> delete from DemoTable722 where StudentId=3 and StudentName='David Miller'; Query OK, 1 row affected (0.21 sec)
ANDを使用することで、両方の条件を満たす行のみが削除対象になります。片方の条件しか一致しない行はそのまま残るため、意図しないデータを誤って消去するリスクを減らせます。
5. 削除後のテーブルを確認する
もう一度SELECT文を実行して、結果を確認しましょう。
mysql> select *from DemoTable722;
実行結果は以下のとおりです。
+-----------+--------------+------------+ | StudentId | StudentName | StudentAge | +-----------+--------------+------------+ | 1 | Chris Brown | 23 | | 2 | John Smith | 21 | | 4 | Adam Smith | 20 | | 5 | Carol Taylor | 24 | +-----------+--------------+------------+ 4 rows in set (0.00 sec)
StudentIdが3の「David Miller」の行だけが削除され、残り4件のレコードは無事に保持されていることがわかります。
まとめ
DELETE FROM テーブル名 WHERE 条件1 AND 条件2;の形式で、複数条件に一致する行のみを削除できる。AND条件を使うことで削除対象を厳密に絞り込み、誤削除を防げる。- 本番環境でDELETEを実行する前に、同じWHERE句で
SELECTを実行して対象行を確認しておくと安全。
-
【MySQL】WHERE句のAND条件を使ってテーブルから特定のレコードを削除する方法
MySQLでWHERE句にAND条件を使って特定のレコードを削除する方法MySQLでは、WHERE句にAND演算子を組み合わせることで、複数の条件をすべて満たすレコードだけを対象に操作できます。本記事では、実際にテーブルを作成し、AND条件を使って特定のレコードを削除するまでの手順を順番に解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0 rows affe
-
MySQLで特定の値が存在しないレコードを抽出する方法(NOT IN句の使い方)
MySQLでテーブルから「特定の値を含まない」レコードだけを取得したい場合は、NOT IN() 句を使用します。この記事では、実際にサンプルテーブルを作成しながら、NOT IN句の基本的な使い方を解説します。サンプルテーブルの作成まず、学生情報を格納するためのテーブルを作成しましょう。StudentId を主キー(AUTO_INCREMENT)とし、StudentName カラムを持つシンプルなテーブルです。mysql> create table DemoTable1991 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,