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がすっきりし、保守性も高まります。姓やカテゴリなど、同一カラムに対する複数条件での検索にぜひ活用してください。
-
MySQLテーブルから新しく追加されたレコードを取得する方法
MySQLでテーブルに新しく追加されたレコードを取得するには、ORDER BY句とLIMIT句を組み合わせて使用します。AUTO_INCREMENTで採番される主キー(ID)を基準に降順(DESC)で並べ替え、LIMITで取得件数を指定することで、最新のレコードだけを効率的に取り出せます。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。ここでは、自動採番される「StudentId」を主キーとする学生テーブルを用意しました。 mysql> create table DemoTable1486 -> ( -> StudentId
-
Node.jsでMySQLのレコードを削除する方法を解説
はじめにデータベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。事前準備作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。mkdir mysql-tes