式のリスト

式のリストは、その他の式の組合せです。

expression_list::=

式のリストは、比較条件、メンバーシップ条件、および問合せと副問合せのGROUP BY句に指定できます。比較条件またはメンバーシップ条件内の式のリストは、行値コンストラクタまたは行コンストラクタと呼ばれる場合があります。

比較条件およびメンバーシップ条件は、WHERE句の条件として指定します。これらの条件には、カンマで区切られた1つ以上の式、または1つ以上の式の集合(各集合には、カンマで区切られた式が1つ以上含まれる)を含めることができます。式の集合が複数存在する場合は、次のように指定します。

  • 各集合をカッコで区切ります。

  • 各集合に含まれる式の数を同じにします。

  • 各集合内の式の数を、比較条件の演算子の前またはメンバーシップ条件のINキーワードの前にある式の数と同じにします。

カンマで区切られた式のリストには、最大1000個の式を指定できます。カンマで区切られた式の集合のリストには、任意数の式の集合を含めることができますが、各集合に指定できる式は最大1000個です。

次に、条件に含める有効な式のリストを示します。

(10, 20, 40) 
('SCOTT', 'BLAKE', 'TAYLOR')
( ('Guy', 'Himuro', 'GHIMURO'),('Karen', 'Colmenares', 'KCOLMENA') )

3番目の例の場合、各集合の式の数は、条件の最初の部分の式の数と同じである必要があります。たとえば:

SELECT * FROM employees 
  WHERE (first_name, last_name, email) IN 
  (('Guy', 'Himuro', 'GHIMURO'),('Karen', 'Colmenares', 'KCOLMENA')) 

関連項目:

比較条件およびIN条件を参照してください。

単純なGROUP BY句では、式のリストの書式として、次のいずれかを使用できます。

SELECT department_id, MIN(salary) min, MAX(salary) max FROM employees
   GROUP BY department_id, salary
   ORDER BY department_id, min, max;

SELECT department_id, MIN(salary) min, MAX(salary) max FROM employees
   GROUP BY (department_id, salary)
   ORDER BY department_id, min, max;

ROLLUPCUBE、およびGROUP BY句のGROUPING SETS句では、個々の式と同じリストにある式の集合を組み合せることができます。次に、1つのSQL文に含まれている有効なグルーピング・セットと式のリストを示します。

SELECT 
prod_category, prod_subcategory, country_id, cust_city, count(*)
   FROM  products, sales, customers
   WHERE sales.prod_id = products.prod_id 
   AND sales.cust_id=customers.cust_id 
   AND sales.time_id = '01-oct-00'
   AND customers.cust_year_of_birth BETWEEN 1960 and 1970
GROUP BY GROUPING SETS 
  (
   (prod_category, prod_subcategory, country_id, cust_city),
   (prod_category, prod_subcategory, country_id),
   (prod_category, prod_subcategory),
    country_id
  )
ORDER BY prod_category, prod_subcategory, country_id, cust_city;

関連項目:

SELECT