MySQLのIN句で一致するレコードを取得する方法
テーブル内のレコードから特定の値に一致するデータを取得したい場合、MySQLのIN()演算子を使用すると便利です。IN()を使うことで、複数の条件値を1つのクエリで簡潔に指定できます。
この記事では、実際にテーブルを作成し、IN()を使ってIdが1と11のレコードを取得する手順を解説します。
サンプルテーブルの作成
まず、CREATE TABLE文でテーブルを作成します。GenderカラムにはENUM型を使用しています。
mysql> create table DemoTable
(
Id int,
FirstName varchar(20),
Gender ENUM('Male','Female')
);
Query OK, 0 rows affected (1.73 sec)レコードの挿入
次に、INSERT文を使ってテーブルに複数のレコードを追加します。
mysql> insert into DemoTable values(1,'Chris','Male'); Query OK, 1 row affected (0.47 sec) mysql> insert into DemoTable values(10,'Emma','Female'); Query OK, 1 row affected (1.88 sec) mysql> insert into DemoTable values(9,'Emma','Male'); Query OK, 1 row affected (0.70 sec) mysql> insert into DemoTable values(11,'Isabella','Female'); Query OK, 1 row affected (0.46 sec)
登録済みレコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+------+-----------+--------+ | Id | FirstName | Gender | +------+-----------+--------+ | 1 | Chris | Male | | 10 | Emma | Female | | 9 | Emma | Male | | 11 | Isabella | Female | +------+-----------+--------+ 4 rows in set (0.00 sec)
IN()を使って一致するレコードを取得
ここで本題です。Idが「1」と「11」に一致するレコードだけを取り出すには、WHERE句とIN()を組み合わせて次のように記述します。
mysql> select *from DemoTable where Id IN(1,11);
実行すると、以下のように該当する2件のレコードのみが出力されます。
+------+-----------+--------+ | Id | FirstName | Gender | +------+-----------+--------+ | 1 | Chris | Male | | 11 | Isabella | Female | +------+-----------+--------+ 2 rows in set (0.00 sec)
まとめ
IN()演算子を使えば、「OR」条件を複数書く代わりに、カンマ区切りで値を列挙するだけで一致するレコードを効率的に取得できます。特に抽出対象の値が多い場合や、動的に条件を組み立てる場合に可読性が高く便利な構文です。
-
MySQLで特定の月と年に基づいてレコードを取得する方法
MySQLで特定の月と年に基づいてレコードを取得する方法日付データから特定の月と年に該当するレコードだけを抽出したい場合、MySQLの MONTH() 関数と YEAR() 関数を組み合わせて使用します。ここでは、実際にテーブルを作成し、データを挿入して、条件に合うレコードを取得するまでの手順を具体的に解説します。1. サンプルテーブルの作成まず、日付型(DATE)のカラムを持つテーブルを作成します。mysql> create table DemoTable1846 ( PurchaseDat
-
MySQLでURLレコードの一部を検索して置き換える方法
MySQLでURLなどの文字列レコードの一部を検索して置き換えたい場合、最もシンプルな方法はREPLACE()関数を使うことです。この記事では、実際のサンプルを使いながら、URLの一部を一括置換する手順をわかりやすく解説します。1. サンプルテーブルの作成まず、URLを格納するためのテーブルを作成します。mysql> create table DemoTable2025 -> ( -> URL text -> );Query OK, 0 rows affected (0.88 sec)2. テストデータの挿入次に、INSERTコマンドを使ってサンプルレ