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

MySQLのIN()演算子を使ってLastNameを条件にレコードを取得する方法

MySQLのIN()演算子とは

MySQLのIN()演算子を使うと、WHERE句で複数の値を指定し、いずれかに一致するレコードを効率的に取得できます。例えば、姓(LastName)が「Smith」「Brown」「Miller」のいずれかに該当するデータだけを抽出したい場合などに非常に便利です。

この記事では、実際にテーブルを作成し、IN()演算子を使ってLastNameを条件にレコードを取得する手順を解説します。

1. テーブルを作成する

まず、以下のコマンドでテーブルを作成します。

mysql> create table DemoTable
(
    FirstName varchar(100),
    LastName varchar(100)
);
Query OK, 0 rows affected (0.83 sec)

2. レコードを挿入する

INSERT文を使って、テーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable values('Adam','Smith');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('John','Doe');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('John','Smith');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Chris','Brown');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('Robert','Brown');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('David','Miller');
Query OK, 1 row affected (0.11 sec)

3. テーブルの全レコードを確認する

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

mysql> select *from DemoTable;

実行すると、次のような結果が出力されます。

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Adam      | Smith    |
| John      | Doe      |
| John      | Smith    |
| Chris     | Brown    |
| Robert    | Brown    |
| David     | Miller   |
+-----------+----------+
6 rows in set (0.00 sec)

合計6件のレコードが登録されていることがわかります。

4. IN()を使ってLastNameを条件にレコードを取得する

ここからが本題です。以下のようにWHERE句とIN()を組み合わせることで、LastNameが「Smith」「Brown」「Miller」のいずれかに一致するレコードのみを取得できます。

mysql> select *from DemoTable where LastName IN('Smith','Brown','Miller');

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

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Adam      | Smith    |
| John      | Smith    |
| Chris     | Brown    |
| Robert    | Brown    |
| David     | Miller   |
+-----------+----------+
5 rows in set (0.00 sec)

結果のポイント

元の6件から「John Doe」の1件が除外され、5件のレコードが取得されました。これは「Doe」がIN()で指定した値(Smith・Brown・Miller)に含まれていないためです。

なお、このクエリは以下のようにOR条件を並べる書き方と同じ結果になります。

SELECT * FROM DemoTable
WHERE LastName = 'Smith'
   OR LastName = 'Brown'
   OR LastName = 'Miller';

しかし、IN()を使った方が記述がシンプルになり、可読性も向上します。特に条件値が多くなる場合や、サブクエリと組み合わせる場合にはIN()の利用が推奨されます。

まとめ

MySQLのIN()演算子を使えば、複数の候補値のいずれかに一致するレコードを簡潔に抽出できます。OR条件の羅列を避けられるため、SQLがすっきりし、保守性も高まります。姓やカテゴリなど、同一カラムに対する複数条件での検索にぜひ活用してください。

  1. MySQLテーブルから新しく追加されたレコードを取得する方法

    MySQLでテーブルに新しく追加されたレコードを取得するには、ORDER BY句とLIMIT句を組み合わせて使用します。AUTO_INCREMENTで採番される主キー(ID)を基準に降順(DESC)で並べ替え、LIMITで取得件数を指定することで、最新のレコードだけを効率的に取り出せます。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。ここでは、自動採番される「StudentId」を主キーとする学生テーブルを用意しました。 mysql> create table DemoTable1486 -> ( -> StudentId

  2. Node.jsでMySQLのレコードを削除する方法を解説

    はじめにデータベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。事前準備作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。mkdir mysql-tes