概要:このチュートリアルでは、SQL ALL演算子について学び、値と値の集合を比較する方法を学びます。
SQL ALL演算子の紹介
SQLのALL
演算子は、論理演算子であり、単一の値を、サブクエリによって返される単一列の値の集合と比較します。
以下は、SQL ALL
演算子の構文を示しています。
WHERE column_name comparison_operator ALL (subquery)
Code language: SQL (Structured Query Language) (sql)
SQL ALL
演算子の前には、>
、>=
、<
、<=
、<>
、=
などの比較演算子を付ける必要があり、その後にサブクエリを続けます。 Oracleなどのデータベースシステムでは、サブクエリではなくリテラル値のリストを許可しているものもあります。
サブクエリが行を返さない場合、WHERE
句の条件は常に真になります。サブクエリが1行以上を返すことを前提として、次の表はSQL ALL
演算子の意味を示しています。
条件 | 意味 |
---|---|
c > ALL(…) | 列cの値は、集合内の最大値よりも大きくなければなりません(真になる条件)。 |
c >= ALL(…) | 列cの値は、集合内の最大値以上でなければなりません(真になる条件)。 |
c < ALL(…) | 列cの値は、集合内の最小値よりも小さくなければなりません(真になる条件)。 |
c >= ALL(…) | 列cの値は、集合内の最小値以下でなければなりません(真になる条件)。 |
c <> ALL(…) | 列cの値は、集合内のどの値とも等しくありません(真になる条件)。 |
c = ALL(…) | 列cの値は、集合内のすべての値と等しくなければなりません(真になる条件)。 |
SQL ALLの例
デモでは、サンプルデータベースのemployees
テーブルを使用します。

大なり演算子を使ったSQL ALL
次のクエリは、column_name
の値がサブクエリによって返される最大値よりも大きい行を見つけます。
SELECT
*
FROM
table_name
WHERE
column_name > ALL (subquery);
Code language: SQL (Structured Query Language) (sql)
たとえば、次のステートメントは、IDが2であるマーケティング部門の従業員の最高給与よりも高い給与を受け取っている従業員全員を見つけます。
SELECT
first_name, last_name, salary
FROM
employees
WHERE
salary > ALL (SELECT
salary
FROM
employees
WHERE
department_id = 2)
ORDER BY salary;
Code language: SQL (Structured Query Language) (sql)

部門2の従業員の最高給与をクエリで確認してみましょう。
SELECT
MAX(salary)
FROM
employees
WHERE
department_id = 2;
Code language: SQL (Structured Query Language) (sql)

このクエリは13,000
を返し、これは上記のALL演算子を使用したクエリによって返される給与よりも低い値です。
以上または等しい演算子を使ったSQL ALL
以下は、以上または等しい演算子を使用したSQL ALL
演算子の構文を示しています。
SELECT
*
FROM
table_name
WHERE
column_name >= ALL (subquery);
Code language: SQL (Structured Query Language) (sql)
このクエリは、column_name
の値がサブクエリによって返されるすべての値以上であるすべての行を返します。
たとえば、次のクエリは、マーケティング部門の従業員の最高給与以上の給与を受け取っている従業員全員を見つけます。
SELECT
first_name, last_name, salary
FROM
employees
WHERE
salary >= ALL (SELECT
salary
FROM
employees
WHERE
department_id = 2)
ORDER BY salary;
Code language: SQL (Structured Query Language) (sql)

スクリーンショットで明らかであるように、Michael
の給与は13,000
であり、これはマーケティング部門の従業員の最高給与と等しいため、結果セットに含まれています。
小なり演算子を使ったSQL ALL
以下は、小なり演算子で使用されるALL
演算子を説明しています。
SELECT
*
FROM
table_name
WHERE
column_name < ALL (subquery);
Code language: SQL (Structured Query Language) (sql)
このクエリは、column_name
の値がサブクエリによって返される最小値よりも小さいすべての行を返します。
次のステートメントは、マーケティング部門の従業員の最低給与を見つけます。
SELECT
MIN(salary)
FROM
employees
WHERE
department_id = 2;
Code language: SQL (Structured Query Language) (sql)

マーケティング部門の従業員の最低給与よりも低い給与を受け取っている従業員全員を見つけるには、小なり演算子を使用してALL
演算子を使用します。
SELECT
first_name, last_name, salary
FROM
employees
WHERE
salary < ALL (SELECT
salary
FROM
employees
WHERE
department_id = 2)
ORDER BY salary DESC;
Code language: SQL (Structured Query Language) (sql)
結果は次のとおりです。

以下または等しい演算子を使ったSQL ALL
以下は、以下または等しい演算子で使用されるALL
演算子の構文を示しています。
SELECT
*
FROM
table_name
WHERE
column_name <= ALL (subquery);
Code language: SQL (Structured Query Language) (sql)
たとえば、次のステートメントは、マーケティング部門の従業員の最低給与以下の給与を受け取っている従業員全員を見つけます。
SELECT
first_name, last_name, salary
FROM
employees
WHERE
salary <= ALL (SELECT
salary
FROM
employees
WHERE
department_id = 2)
ORDER BY salary DESC;
Code language: SQL (Structured Query Language) (sql)

等しくない演算子を使ったSQL ALL
次のクエリは、column_name
の値がサブクエリによって返されるどの値とも等しくないすべての行を返します。
SELECT
*
FROM
table_name
WHERE
column_name <> ALL (subquery);
Code language: SQL (Structured Query Language) (sql)
たとえば、各部門の平均給与と等しくない給与を受け取っている従業員を見つけるには、以下のクエリを使用します。
SELECT
first_name, last_name, salary
FROM
employees
WHERE
salary <> ALL (SELECT
AVG(salary)
FROM
employees
GROUP BY department_id)
ORDER BY salary DESC;
Code language: SQL (Structured Query Language) (sql)

サブクエリは、AVG()
関数とGROUP BY
句を使用して、部門別に従業員の平均給与を求めます。
等しい演算子を使ったSQL ALL
ALL
演算子を等しい演算子と一緒に使用すると、クエリは、column_name
の値がサブクエリによって返されるどの値とも等しいすべての行を見つけます。
SELECT
*
FROM
table_name
WHERE
column_name = ALL (subquery);
Code language: SQL (Structured Query Language) (sql)
次の例は、マーケティング部門の従業員の最高給与と等しい給与を受け取っている従業員全員を見つけます。
SELECT
first_name, last_name, salary
FROM
employees
WHERE
salary = ALL (SELECT
MAX(salary)
FROM
employees
WHERE
department_id = 2);
Code language: SQL (Structured Query Language) (sql)

このチュートリアルでは、SQL ALL
演算子を使用して、値がサブクエリによって返される値の集合と一致するかどうかをテストする方法を学びました。