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

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を実行して対象行を確認しておくと安全。
  1. 【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

  2. MySQLで特定の値が存在しないレコードを抽出する方法(NOT IN句の使い方)

    MySQLでテーブルから「特定の値を含まない」レコードだけを取得したい場合は、NOT IN() 句を使用します。この記事では、実際にサンプルテーブルを作成しながら、NOT IN句の基本的な使い方を解説します。サンプルテーブルの作成まず、学生情報を格納するためのテーブルを作成しましょう。StudentId を主キー(AUTO_INCREMENT)とし、StudentName カラムを持つシンプルなテーブルです。mysql> create table DemoTable1991 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,