Beim Durchsuchen dieses Kommentarbereichs stieß ich auf zwei verschiedene Muster, die die Frage beantworteten. Leider funktioniert das zweite Muster für SQL 2012 nicht. Hier ist meine "Umgehung".
Bestellen Sie nach einer gemeinsamen Spalte
Dies ist der einfachste Fall, dem Sie begegnen können. Wie viele Benutzer bereits betont haben, müssen Sie Order By
am Ende der Abfrage nur eine hinzufügen
SELECT a FROM table1
UNION
SELECT a FROM table2
ORDER BY field1
oder
SELECT a FROM table1 ORDER BY field1
UNION
SELECT a FROM table2 ORDER BY field1
Bestellen Sie nach in verschiedenen Spalten
Hier wird es tatsächlich schwierig. Mit SQL 2012 habe ich den Top-Beitrag ausprobiert und er funktioniert nicht.
SELECT * FROM
(
SELECT table1.field1 FROM table1 ORDER BY table1.field1
) DUMMY_ALIAS1
UNION ALL
SELECT * FROM
(
SELECT table2.field1 FROM table2 ORDER BY table2.field1
) DUMMY_ALIAS2
Nach der Empfehlung im Kommentar habe ich dies versucht
SELECT * FROM
(
SELECT TOP 100 PERCENT table1.field1 FROM table1 ORDER BY table1.field1
) DUMMY_ALIAS1
UNION ALL
SELECT * FROM
(
SELECT TOP 100 PERCENT table2.field1 FROM table2 ORDER BY table2.field1
) DUMMY_ALIAS2
Dieser Code hat zwar kompiliert, aber das DUMMY_ALIAS1
und DUMMY_ALIAS2
überschreibt das Order By
in der Select
Anweisung festgelegte, was dies unbrauchbar macht.
Die einzige Lösung, die mir einfiel und die für mich funktionierte, bestand darin, keine Gewerkschaft zu verwenden und stattdessen die Abfragen einzeln auszuführen und sie dann zu bearbeiten. Verwenden Union
Sie also im Grunde genommen kein, wenn Sie möchtenOrder By