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

MySQLで特定の1行以外のすべての行を削除する方法

MySQLで特定の1行だけを残して、それ以外のすべての行を削除したいケースはよくあります。そのような場合には、DELETE文のWHERE句に比較演算子!=を組み合わせるのが基本的な方法です。

使用する構文は以下の通りです。

delete from yourTableName where yourColumnName != yourValue;

なお、!=の代わりに<>(不等号演算子)を使っても同様の結果が得られます。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Subject varchar(100)
    );
Query OK, 0 rows affected (0.65 sec)

データの挿入

次に、INSERTコマンドを使っていくつかのレコードを追加します。

mysql> insert into DemoTable(Subject) values('MySQL');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(Subject) values('MongoDB');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(Subject) values('Java');
Query OK, 1 row affected (0.12 sec)

現在のデータを確認

SELECT文でテーブル内の全レコードを表示してみます。

mysql> select *from DemoTable;

出力結果

+----+---------+
| Id | Subject |
+----+---------+
| 1  | MySQL   |
| 2  | MongoDB |
| 3  | Java    |
+----+---------+
3 rows in set (0.00 sec)

特定の行以外を削除するクエリ

ここでは、「MongoDB」という値を持つ行だけを残し、それ以外の行をすべて削除します。実行するクエリは以下の通りです。

mysql> delete from DemoTable where Subject!='MongoDB';
Query OK, 2 rows affected (0.19 sec)

Query OK, 2 rows affectedと表示されているように、2行が削除されました。

削除後の確認

もう一度テーブルの中身を確認してみましょう。

mysql> select *from DemoTable;

出力結果

+----+---------+
| Id | Subject |
+----+---------+
| 2  | MongoDB |
+----+---------+
1 row in set (0.00 sec)

このように、DELETE文のWHERE句で「残したい値以外」という条件を指定するだけで、特定の1行以外のすべての行を簡単に削除できます。

注意点: WHERE句を忘れてDELETE文を実行すると、テーブル内の全データが削除されてしまうため、実行前に必ず条件を確認することをおすすめします。また、対象カラムにNULLが含まれる場合、!=による比較ではNULLの行は削除されない点にも留意してください。

  1. MySQLでテーブルから特定の行を抽出するクエリの書き方

    MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),

  2. MySQLで重複行を除外して1行だけ取得する方法(DISTINCTの使い方)

    MySQLで重複行から1行のみを返すには?MySQLのテーブルに同じ値を持つ重複行が存在する場合、DISTINCTキーワードを使うことで、重複を排除した一意な行だけを取得できます。この記事では、実際にテーブルを作成し、データを挿入したうえで、DISTINCTによる重複除去の手順を解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1998 ( Name varchar(20) ); Query OK, 0 rows affected (0.61 sec)2. レコードを挿入するINSERTコマンドを