Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データのクエリと変更 » クエリ結果の要約、グループ化、ソート » UNION、INTERSECT、EXCEPT を使用した、クエリ結果に対する集合操作の実行

 

集合操作のルール

UNION 文、EXCEPT 文、INTERSECT 文には、次のルールが適用されます。

  • select リストの項目数は同じにする   クエリ内のすべての SELECT リストは、式 (カラム名、算術式、集合関数など) の数を同じにします。次の文は、最初の select リストが 2 番目のリストより長いので無効です。
    SELECT store_id, city, state
       FROM stores
    UNION
       SELECT store_id, city
         FROM stores_east;

  • データ型を一致させる   SELECT リストで対応する式のデータ型を同じにするか、2 種類のデータ型の間で暗黙的データ変換ができるようにします。または、明示的変換を指定します。

    たとえば、CHAR データ型のカラムと INT データ型のカラムの間では、明示的変換が指定されなければ UNION、INTERSECT、または EXCEPT は不可能です。しかし、MONEY データ型のカラムと INT データ型のカラムの間では、集合操作が可能です。

  • カラム順   集合操作の各クエリで、対応する式を同じ順序で並べます。これは、集合演算子が、SELECT 句の各クエリで指定された順に 1 対 1 で式を比較するためです。

  • 複数の集合操作   次の例のように、いくつかの集合操作を一緒に配列できます。
    SELECT City AS Cities
       FROM Contacts
       UNION
          SELECT City
             FROM Customers
       UNION
          SELECT City
             FROM Employees;

    UNION 文では、クエリの順番は重要ではありません。INTERSECT では、2 つ以上のクエリがある場合、順番は重要です。EXCEPT では、順番は常に重要です。

  • カラム見出し   UNION の結果生成されるテーブルのカラム名は、文中の最初のクエリから取得されます。結果セット用に新しいカラム見出しを定義する場合は、次の例のように、最初のクエリの select リストで定義できます。
    SELECT City AS Cities
       FROM Contacts
       UNION
          SELECT City
             FROM Customers;

    次のクエリでは、カラム見出しは UNION 文の最初のクエリで定義した City のままです。

    SELECT City
       FROM Contacts
       UNION
          SELECT City AS Cities
             FROM Customers;

    または、WITH 句を使用してカラム名を定義できます。次に例を示します。

    WITH V( Cities )
    AS ( SELECT City
         FROM Contacts
         UNION
            SELECT City
             FROM Customers )
    SELECT * FROM V;

  • 結果の順序付け   SELECT 文の WITH 句を使用して、select リスト内のカラム名に順序を付けられます。次に例を示します。
    WITH V( CityName )
    AS ( SELECT City AS Cities
         FROM Contacts
         UNION
            SELECT City
               FROM Customers )
    SELECT * FROM V
       ORDER BY CityName;

    また、クエリのリストの最後に単一の ORDER BY 句を使用できますが、次の例のように、カラム名ではなく整数を使用してください。

    SELECT City AS Cities
       FROM Contacts
       UNION
          SELECT City
            FROM Customers
       ORDER BY 1;