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

MySQLで2カラムにIN句を実装して選択したレコードのみを表示する方法

はじめに

MySQLでは通常、IN句は1つのカラムに対して使用されますが、実は複数のカラムを組み合わせた条件でもIN句を利用できます。本記事では、2つのカラム(First、Second)の値のペアを条件として、該当するレコードのみを抽出する方法を具体的な例とともに解説します。

サンプルテーブルの作成

まず、2つのINT型カラムを持つテーブルを作成します。

mysql> create table DemoTable810(
   First int,
   Second int
);
Query OK, 0 rows affected (0.73 sec)

レコードの挿入

次に、INSERTコマンドを使ってテーブルに複数のレコードを挿入します。

mysql> insert into DemoTable810 values(20,40);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable810 values(70,90);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable810 values(120,150);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable810 values(78,128);
Query OK, 1 row affected (0.32 sec)

全レコードの確認

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

mysql> select *from DemoTable810;

このクエリを実行すると、以下のような結果が得られます。

+-------+--------+
| First | Second |
+-------+--------+
|    20 |     40 |
|    70 |     90 |
|   120 |    150 |
|    78 |    128 |
+-------+--------+
4 rows in set (0.00 sec)

2カラムに対するIN句の実装

ここが本記事のポイントです。以下のように、カラム名を括弧でグループ化し、IN句の中に値のペアをタプル形式で指定することで、複数カラムの組み合わせ一致を判定できます。

mysql> select *from DemoTable810 where (First,Second) IN((120,150),(20,40));

このクエリは、「First列とSecond列の値の組み合わせが (120,150) または (20,40) であるレコード」だけを抽出します。実行結果は次のとおりです。

+-------+--------+
| First | Second |
+-------+--------+
|    20 |     40 |
|   120 |    150 |
+-------+--------+
2 rows in set (0.00 sec)

結果の解説

元のテーブルには4件のレコードがありましたが、条件に合致した (20, 40)(120, 150) の2件のみが表示されました。このように行コンストラクター(row constructor)を使ったIN句を活用すれば、OR条件を何度も書くことなく、すっきりとした可読性の高いSQLで複数カラムの組み合わせ検索が実現できます。

  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     -> (