English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、WHERE子句でAND&OR演算子を使用して、複数の条件に基づいてレコードをフィルタリングする方法を学びます。
前章では、WHERE子句を使用して単一の条件でテーブルからレコードを取得する方法を学びました。しかし、時には複数の条件に基づいてレコードをフィルタリングする必要があります。例えば、30歳で国が/アメリカの地域のユーザー、価格が100ドルで評価が4の製品、などなど。
AND演算子は論理演算子で、二つの条件を組み合わせて、二つの条件の結果がどちらもTRUEの場合にのみTRUEを返します。通常、SELECT、UPDATE、DELETEのWHERE子句でAND演算子を使用して結果セットをフィルタリングする条件を作成します。
SELECT column1_name, column2_name, columnN_nameFROM table_nameWHERE condition1 AND condition2;
いくつかの例を見て、実際の動作を示しましょう。
データベースに、employeesのテーブルに含まれる以下のレコードを含みます:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
以下のSQL文は、employees表中で給料(salary)が7000およびdept_idに等しい5の従業員です。
SELECT * FROM employees WHERE salary > 7000 AND dept_id = 5;
実行後、以下の結果を得ることができます:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+
同様に、OR演算子も二つの条件を組み合わせる論理演算子ですが、二つの条件のうちどちらかがTRUEの場合でもTRUEを返します。
以下のSQL文は、employees表中で給料(salary)が7000またはdept_idに等しい5のすべての従業員。
SELECT * FROM employees WHERE salary > 7000 OR dept_id = 5;
この度は以下の結果を得ることができます:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
ANDおよびORを組み合わせて複雑な条件式を作成することもできます。
以下のSQL文は、給料が5000、およびdept_idに等しい1または5のすべての従業員。
SELECT * FROM employees WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);
上記のクエリを実行した後、以下のような出力が得られます:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+