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

【MySQL】特定の1レコードを除いてすべてのレコードを表示する方法

MySQLでは、IN()句を使うことで、特定のレコードを除外したすべてのレコードを表示できます。この記事では、テーブルの作成から実際にレコードを除外して表示するまでの手順を、具体例とともにわかりやすく解説します。

テーブルの作成

まず、以下のCREATE TABLE文でサンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    Id int,
    FirstName varchar(20)
);
Query OK, 0 rows affected (0.57 sec)

レコードの挿入

次に、INSERT文を使ってサンプルデータを4件挿入します。

mysql> insert into DemoTable values(100,'Larry');
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable values(10,'Chris');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(110,'Robert');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(90,'David');
Query OK, 1 row affected (0.20 sec)

全レコードの確認

SELECT文を実行して、現在テーブルに格納されているすべてのレコードを確認してみます。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  | Larry     |
| 10   | Chris     |
| 110  | Robert    |
| 90   | David     |
+------+-----------+
4 rows in set (0.00 sec)

IN()を使って特定のレコード以外を表示する

ここでは例として、Idが「10」のレコード(Chris)を除外して表示してみましょう。表示したいレコードのIdをIN()の中に列挙することで、指定外のレコードのみを取得できます。

mysql> select *from DemoTable where Id IN(110,90,100);

実行結果:

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  | Larry     |
| 110  | Robert    |
| 90   | David     |
+------+-----------+
3 rows in set (0.00 sec)

Idが「10」のChrisのレコードが除外され、残りの3件が表示されました。

より実用的な方法:NOT IN()の活用

上記のIN()方式は、除外したいレコード以外をすべて列挙する必要があるため、レコード数が多い場合には不向きです。実際の開発では、除外したいIdだけを指定できるNOT IN()を使う方がシンプルでおすすめです。

mysql> select *from DemoTable where Id NOT IN(10);

このクエリでも同じ結果が得られます。除外対象を1つ指定するだけでよいため、条件の変更や保守も容易になります。

まとめ

MySQLで特定のレコードを除外して表示するには、以下の2つの方法があります。

  • IN(): 表示したいレコードのIdをすべて列挙する方法
  • NOT IN(): 除外したいレコードのIdだけを指定する方法(推奨)

状況に応じて使い分けることで、柔軟かつ効率的にデータを取得できます。

  1. MySQLのGROUP BY句で日付をグループ化してレコードを表示する方法

    MySQLで日付をグループ化する基本 MySQLで日付データをグループ化してレコードを表示するには、GROUP BY句を使用します。この記事では、顧客ごとに出荷日の最小値と最大値を取得する例を通じて、GROUP BY句の使い方を詳しく解説します。 1. サンプルテーブルの作成 まず、顧客名と出荷日を格納するテーブルを作成します。 mysql> create table DemoTable2002 ( CustomerName varchar(20), CustomerShippingDate datetime ); Query OK, 0 rows affected (

  2. MySQLでTRUE/FALSEのレコードを0/1として表示する方法

    MySQLでTRUE/FALSEのレコードを0/1として表示する方法MySQLでは、カラムのデータ型をBOOLEANとして定義することで、TRUE/FALSEの値が自動的に0と1として表示されます。BOOLEAN型は内部的にはTINYINT(1)のエイリアスであり、TRUEは1、FALSEは0として扱われます。以下、具体的な手順を解説します。1. テーブルの作成まず、BOOLEAN型のカラムを含むテーブルを作成しましょう。mysql> create table DemoTable2035     -> (