1 つ以上の SELECT 文を組み合わせます。
Synopsis
select-statement {UNION [ALL] select-statement}
select-statement {UNION [ALL] (query)}
(query) {UNION [ALL] select-statement}
(query) {UNION [ALL] (query)}
UNION は 2 つ以上の "
SELECT" 文を単一のクエリとして組み合わせ、結果セットにデータを取り出します。
SELECT 文の間で UNION を可能にするには、それぞれで指定された列数が一致し、それぞれの指定された列が他の
SELECT 文内の対応する列位置と互換性を持つデータ型である必要があります。1 つの
SELECT 内に NULL 列を指定し、列数を一致させるために別の
SELECT 内のデータ列と組み合わせることができます。この NULL 使用方法を以下の例に示します。
対応する列は 2 つのテーブル内で同じ名前をほとんど持たないため、結果セット列を識別するために
AS 節を使用することをお勧めします。
AS が指定されておらず、列名が同一でない場合、Caché SQL は結果セット列に Literal_2 のような名前を割り当てます。
一般の
UNION は、結果セットからの重複する行 (すべての値が同一) を削除します。
UNION ALL は、結果セット内に重複する行を保存します。
結果セット内の文字列フィールドには常に EXACT 照合が割り当てられます。
以下の例は、2 つのテーブルのそれぞれで見つかったすべての Name に対応する行を持つ結果セットを生成しています。Name が両方のテーブルで見つかった場合、行が 2 つ作成されます。Name が従業員の場合、State としての "オフィス" という用語と従業員の役職とを連結して、オフィスの場所をリストします。Name が人の場合、State としての "自宅" という用語と役職に対する <null> とを連結して、自宅の場所をリストします。ORDER BY 節は結果セットを処理し、行の組み合わせは Name を使って順番に並べられます。
SELECT Name,Office_State||' office' AS State,Title
FROM Sample.Employee
UNION
SELECT Name,Home_State||' home',NULL
FROM Sample.Person
ORDER BY Name