INTERSECT (SQL)
構文
query1 INTERSECT query2
説明
INTERSECT は、2 つ以上のクエリを 1 つのクエリにまとめ、両方のクエリの結果セットにあるデータのみを返します。結果セットに重複は含まれません。
2 つのクエリ間で INTERSECT を使用するには、それぞれで指定される列の数が一致している必要があります。異なる列数の結果を返すクエリを指定すると、SQLCODE -9 エラーが発生します。列数を一致させるために、1 つのクエリで NULL 列を指定し、もう 1 つのクエリのデータ列と組み合わせることができます。
InterSystems SQL は、両方のクエリを評価して、VARCHAR、DOUBLE、NUMERIC、BIGINT、INTEGER、SMALLINT、TINYINT の中から、最も優先順位の高いデータ型を返すことで、結果列のデータ型を決定します。DATE などの他のデータ型に優先順位は割り当てられません。優先順位が割り当てられないデータ型を返す場合は、明示的な CAST 文を使用する必要があります。詳細は、"例" を参照してください。
引数
query
query (通常は SELECT 文) は、1 つ以上の SELECT 文を組み合わせます。
例
以下の例では、他のコンテキストでは DATE データ型がより高い優先順位を持つ場合でも、データ型 TINYINT で列を返します。
SELECT MyTinyIntField FROM Table1
INTERSECT
SELECT MyDateField FROM Table2
以下の例では、CAST 文を使用して、クエリで優先順位が割り当てられないデータ型を返します。
SELECT CAST(MyTinyInt AS DATE) FROM Table1
INTERSECT
SELECT MyDateField FROM Table2
以下の例では、最初のクエリにも 2 番目のクエリにもあるすべてのエントリの行を含む結果セットを作成します。結果セットには、一致するエントリのペアごとに 1 行のみが含まれます。2 つのテーブルにまったく同じデータ・セットがある場合、結果セットの長さは一方のテーブルの長さと同じになります。ORDER BY 節は結果を処理し、結果セットを Name 別に並べます。
SELECT Name,Address,NULL
FROM Sample.Employee
INTERSECT
SELECT Name,Address,Age
FROM Sample.Person
ORDER BY Name