複数条件
AND および OR 演算子を使用して、複数の条件に基づいて述部を結合し、データを検索することができます。
AND 演算子を使用して、1 つの検索で両方の条件を満足させる必要があることを指定します。 OR 演算子を使用して、複数条件のうちの少なくとも 1 つをその検索で満足させる必要があることを指定します。
例
- 例
- 以下の照会は、1998 年以前に雇用され、年収が $35,000 未満の従業員ごとに、従業員番号、雇用日、および給与を取得します:
SELECT EMPNO, HIREDATE, SALARY FROM EMP WHERE HIREDATE < '1998-01-01' AND SALARY < 35000; - 例
- この照会は、1998 年以前に雇用された従業員、または年収が $35,000 未満の従業員、あるいはその両方の従業員の従業員番号、雇用日、および給与をリトリーブします:
SELECT EMPNO, HIREDATE, SALARY FROM EMP WHERE HIREDATE < '1998-01-01' OR SALARY < 35000;
例: AND および OR で括弧を使用する方法
ANDまたはOR演算子を使用して2つ以上の条件を使用する場合は、 Db2 が検索条件を評価する順序を指定するために括弧を使用することができます。 この括弧を移動させると、WHERE 文節の意味が大きく変わる可能性があります。
- 例
- 以下の照会では、以下の条件のうちの少なくとも 1 つを満足する各社員の行をリトリーブします。
- 従業員の採用日が 1998 年より前であり、給与が $40,000 未満である。
- その社員の教育レベルが 18 未満。
SELECT EMPNO FROM EMP WHERE (HIREDATE < '1998-01-01' AND SALARY < 40000) OR (EDL < 18); - 例
- 以下の照会では、以下の条件の両方を満足する各社員の行をリトリーブします。
- 社員の雇用日付が 1998 年以前。
- 従業員の給与が $40,000 未満であるか、従業員の教育レベルが 18 未満です。
SELECT EMPNO FROM EMP WHERE HIREDATE < '1998-01-01' AND (SALARY < 40000 OR EDL < 18); - 例
- 以下の照会では、以下の条件の 1 つを満足する各社員の社員番号をリトリーブします。
- 1998 年以前に雇用され、給与は 4 万ドル未満です。
- 1998 年 1 月 1 日以降に雇用され、給与が 4 万ドルを超えている。
SELECT EMPNO FROM EMP WHERE (HIREDATE < '1998-01-01' AND SALARY < 40000) OR (HIREDATE> '1998-01-01' AND SALARY> 40000);
例: How to use NOT with AND and OR
AND と OR を指定した場合に NOT を使用すると、括弧の位置が重要となります。
- 例
- 以下の照会では、以下の条件の両方を満足する各社員について、その社員番号、教育レベル、および職位をリトリーブします。
- 従業員の給与は 5 万ドル未満です。
- その社員の教育レベルが 18 未満。
SELECT EMPNO, EDL, JOB FROM EMP WHERE NOT (SALARY>= 50000) AND (EDL < 18);この照会では、NOT 演算子は最初の検索条件 (SALARY> = 50000) にのみ影響します。
- 例
- 以下の照会では、以下の条件のうちの少なくとも 1 つを満足する各社員について、その社員番号、教育レベル、および職位をリトリーブします。
- その社員の給与が $50,000 以下。
- その社員の教育レベルが 18 以下。
SELECT EMPNO, EDL, JOB FROM EMP WHERE NOT (SALARY> 50000 AND EDL> 18);1 セットの述部を否定するには、このセット全体を括弧で囲み、NOT キーワードをそのセットの先頭に付けます。