Die folgenden Regeln gelten für UNION-, EXCEPT- und INTERSECT-Anweisungen:
Gleiche Anzahl von Elementen in den Auswahllisten Alle Auswahllisten in den Abfragen müssen dieselbe Anzahl von Ausdrücken haben (wie Spaltennamen, arithmetische Ausdrücke und Aggregatfunktionen). Folgende Anweisung ist ungültig, weil die erste Auswahlliste länger als die zweite ist:
SELECT store_id, city, state FROM stores UNION SELECT store_id, city FROM stores_east; |
Datentypen müssen übereinstimmen Einander entsprechende Ausdrücke in den Auswahllisten müssen denselben Datentyp haben, oder eine implizite Datenkonvertierung muss zwischen den beiden Datentypen möglich sein bzw. eine explizite Konvertierung eingeplant werden.
Beispiel: Ein UNION-, INTERSECT- oder EXCEPT-Vorgang ist nicht möglich zwischen einer Spalte des Datentyps CHAR und einer Spalte des Datentyps INT, wenn nicht eine explizite Konvertierung eingebaut wird. Allerdings ist eine Mengenoperation möglich zwischen einer Spalte des Datentyps MONEY und des Datentyps INT.
Spaltenreihenfolge Sie müssen einander entsprechende Ausdrücke in die einzelnen Abfragen einer Mengenoperation in derselben Reihenfolge eingeben, da die Mengenoperatoren nacheinander in der Reihenfolge vergleichen, die in den einzelnen Abfragen in den SELECT-Klauseln angegeben wird.
Mehrere Mengenoperationen Sie können mehrere Mengenoperationen zusammenbinden, wie dies im folgenden Beispiel der Fall ist:
SELECT City AS Cities FROM Contacts UNION SELECT City FROM Customers UNION SELECT City FROM Employees; |
Bei UNION-Anweisungen ist die Reihenfolge der Abfragen ohne Bedeutung. Bei INTERSECT ist die Reihenfolge von Bedeutung, wenn es zwei oder mehr Abfragen gibt. Bei EXCEPT ist die Reihenfolge immer von Bedeutung.
Spaltentitel Die Spaltennamen in der Tabelle, die aus einem UNION-Vorgang hervorgehen, werden der ersten individuellen Abfrage in der Anweisung entnommen. Wenn Sie einen neuen Spaltentitel für die Ergebnismenge definieren wollen, können Sie dies in der ersten Abfrage tun, wie im folgenden Beispiel gezeigt wird:
SELECT City AS Cities FROM Contacts UNION SELECT City FROM Customers; |
In der folgenden Abfrage bleibt der Spaltentitel "City" erhalten, da er in der ersten Abfrage der UNION-Klausel definiert wurde.
SELECT City FROM Contacts UNION SELECT City AS Cities FROM Customers; |
Oder Sie verwenden die WITH-Klausel, um die Spaltennamen festzulegen. Beispiel:
WITH V( Cities ) AS ( SELECT City FROM Contacts UNION SELECT City FROM Customers ) SELECT * FROM V; |
Sortierung der Ergebnisse Mit der WITH-Klausel der SELECT-Anweisung können Sie die Reihenfolge der Spaltennamen in der Auswahlliste bestimmen. Beispiel:
WITH V( CityName ) AS ( SELECT City AS Cities FROM Contacts UNION SELECT City FROM Customers ) SELECT * FROM V ORDER BY CityName; |
Sie können auch eine einzige ORDER BY-Klausel am Ende der Liste der Abfragen verwenden, müssen aber Ganzzahlen anstelle von Spaltennamen benutzen, wie im folgenden Beispiel gezeigt wird:
SELECT City AS Cities FROM Contacts UNION SELECT City FROM Customers ORDER BY 1; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |