MySQLのWHERE句で複数の条件を指定する方法!AND・OR演算子の使い方を実例付きで解説
MySQLでは、SELECT * FROM テーブル名 WHERE 条件1 AND 条件2 のように、WHERE句に複数の条件を指定することができます。その場合は AND または OR 演算子を使用します。
基本構文
SELECT * FROM テーブル名 WHERE カラム名1 = 値1 AND カラム名2 = 値2;
AND演算子を使用した場合、指定したすべての条件が真(TRUE)であるレコードのみが取得されます。どちらか一方でも条件を満たさない場合、結果は空のセット(0件)となります。一方、OR演算子を使えば、いずれか一方の条件でも満たしていればレコードが取得されます。
サンプルテーブルの作成
それでは、実際に構文を確認するためにテーブルを作成してみましょう。テーブル作成のクエリは以下の通りです。
mysql> create table WhereDemo
-> (
-> Id int,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.56 sec)データの挿入
次に、INSERTコマンドを使ってテーブルにいくつかレコードを挿入します。
mysql> insert into WhereDemo values(101,'Maxwell'); Query OK, 1 row affected (0.14 sec) mysql> insert into WhereDemo values(110,'David'); Query OK, 1 row affected (0.21 sec) mysql> insert into WhereDemo values(1000,'Carol'); Query OK, 1 row affected (0.18 sec) mysql> insert into WhereDemo values(1100,'Bob'); Query OK, 1 row affected (0.47 sec) mysql> insert into WhereDemo values(115,'Sam'); Query OK, 1 row affected (0.23 sec)
登録データの確認
SELECT文ですべてのレコードを表示して、正しく登録されているか確認しましょう。
mysql> select *from WhereDemo;
実行結果は以下の通りです。
+------+---------+ | Id | Name | +------+---------+ | 101 | Maxwell | | 110 | David | | 1000 | Carol | | 1100 | Bob | | 115 | Sam | +------+---------+ 5 rows in set (0.00 sec)
AND演算子で複数条件を指定した検索
ここからが本題です。AND演算子を使って、複数の条件をすべて満たすレコードだけを抽出してみましょう。以下のクエリでは、「Idが1100」かつ「NameがBob」という2つの条件を指定しています。
mysql> select *from WhereDemo where Id=1100 AND Name='Bob';
実行結果は以下の通りです。
+------+------+ | Id | Name | +------+------+ | 1100 | Bob | +------+------+ 1 row in set (0.00 sec)
このように、両方の条件に一致する1件のレコードのみが返されました。
まとめ
MySQLのWHERE句で複数条件を扱うには、AND演算子やOR演算子を組み合わせます。ANDは「すべての条件を満たす」レコードを抽出し、ORは「いずれかの条件を満たす」レコードを抽出します。なお、3つ以上の条件を指定することも可能で、その場合は 条件1 AND 条件2 AND 条件3 のように演算子を連結して記述できます。状況に応じてANDとORを使い分けることで、より柔軟なデータ検索が実現できます。
-
MySQLの単一クエリでSELECT LIKEとCHAR_LENGTH()を組み合わせて使う方法
はじめにMySQLでは、LIKE句による部分一致検索と、CHAR_LENGTH()関数による文字数の条件指定を、1つのクエリ内で同時に組み合わせることができます。これにより、「特定の文字列を含み、かつ文字数が一定以下であるレコードだけを抽出する」といった柔軟なデータの絞り込みが可能になります。本記事では、実際にテーブルを作成し、データを挿入しながら、その具体的な手順を解説します。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(20) -> );Que
-
MySQLでテーブルの重複を除いたレコードから平均値を取得するクエリの書き方
MySQLで平均値を求めるには AVG() 関数を使用します。さらに DISTINCT と組み合わせることで、重複しているレコードを除外した状態で平均を計算することができます。この記事では、実際にサンプルテーブルを作成しながら、個別(ユニーク)なレコードから平均値を取得する方法を解説します。サンプルテーブルの作成まず、以下のクエリでテーブルを作成します。mysql> create table DemoTable1934 ( StudentName varchar(20), StudentMarks int ); Query OK, 0 rows affec