MySQLでAND演算子とOR演算子を組み合わせたSELECTクエリの使い方
MySQLでは、WHERE句の中でAND演算子とOR演算子を組み合わせることで、複数の条件に基づいた柔軟なデータ抽出が可能になります。この記事では、実際にテーブルを作成し、ANDとORを組み合わせたSELECTクエリの実行方法を手順を追って解説します。
1. サンプルテーブルの作成
まず、CREATE TABLE文を使用してテーブルを作成します。
mysql> create table DemoTable
(
StudentId int,
StudentName varchar(20),
StudentSubject varchar(20)
);
Query OK, 0 rows affected (0.62 sec)2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにレコードを挿入します。
mysql> insert into DemoTable values(10,'Chris','MongoDB'); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(11,'David','MySQL'); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable values(12,'Bob','Java'); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(10,'Carol','MySQL'); Query OK, 1 row affected (0.51 sec) mysql> insert into DemoTable values(10,'Chris','MongoDB'); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable values(14,'David','MySQL'); Query OK, 1 row affected (0.12 sec)
3. テーブル内の全レコードを表示
SELECT文を使用して、テーブル内のすべてのレコードを表示して確認しましょう。
mysql> select *from DemoTable;
上記のクエリを実行すると、以下のような結果が出力されます。
+-----------+-------------+----------------+ | StudentId | StudentName | StudentSubject | +-----------+-------------+----------------+ | 10 | Chris | MongoDB | | 11 | David | MySQL | | 12 | Bob | Java | | 10 | Carol | MySQL | | 10 | Chris | MongoDB | | 14 | David | MySQL | +-----------+-------------+----------------+ 6 rows in set (0.00 sec)
4. ANDとORを組み合わせた選択クエリの実行
ここが本題です。ANDとORを組み合わせて条件を指定するSELECTクエリは以下のようになります。
mysql> select *from DemoTable where StudentName='David' and StudentSubject='MySQL' OR StudentId=11;
実行すると、次の出力が得られます。
+-----------+-------------+----------------+ | StudentId | StudentName | StudentSubject | +-----------+-------------+----------------+ | 11 | David | MySQL | | 14 | David | MySQL | +-----------+-------------+----------------+ 2 rows in set (0.00 sec)
結果の解説
SQLでは、AND演算子はOR演算子よりも優先順位が高いため、上記のクエリは次のように評価されます。
WHERE (StudentName='David' AND StudentSubject='MySQL') OR (StudentId=11)
つまり、「名前がDavidかつ科目がMySQLであるレコード」または「StudentIdが11であるレコード」のいずれかに該当する行が抽出されます。そのため、StudentId=11の「David / MySQL」と、最初の条件を満たすStudentId=14の「David / MySQL」の2行が結果として表示されています。
まとめ
ANDとORを組み合わせることで、単一の条件では実現できない複雑な検索が可能になります。ただし、演算子の優先順位によって意図しない結果になることがあるため、複雑な条件を扱う場合は括弧( )を使って優先順位を明示的に指定することをおすすめします。
-
MySQLでAND・OR演算子を組み合わせた単一クエリを使って特定のレコードを取得する方法
MySQLでは、AND演算子とOR演算子をWHERE句で組み合わせることで、複数の条件を指定しながら特定のレコードを1つのクエリで取得できます。本記事では、実際にテーブルを作成し、データを挿入して、AND・ORを組み合わせたクエリの動作を確認していきます。 1. テーブルの作成 まず、CREATE TABLE文でサンプル用のテーブルを作成します。 mysql> create table DemoTable2015 -> ( -> StudentId int, -> StudentName varchar(20), -> Stude
-
MySQLデータベースの作成と使い方を徹底解説!初心者向け基本ステップ
MySQLデータベース操作の基本ステップMySQLのインストールが完了し、SQL文の入力方法を理解したら、いよいよデータベースへアクセスできるようになります。ここでは、データベース内のテーブルからデータを取得するまでの一連の手順を順番に見ていきましょう。サーバーへの接続データベースの作成テーブルの作成テーブルへのデータ投入テーブルからのデータ取得既存のデータベースを確認する新しいデータベースを作成する前に、まず環境にすでに存在するデータベースを把握しておくことが重要です。以下のクエリを実行することで、現在利用可能なデータベースの一覧を確認できます。クエリmysql> SHOW DATAB