In SQL können Sie Ergebnisse aus mehreren SELECT-Befehlen kombinieren, indem Sie die Schlüsselwörter UNION oder UNION ALL verwenden. Dies ist besonders nützlich, wenn Sie Datensätze aus mehreren Tabellen oder Ansichten abrufen möchten, die ähnliche Datenstrukturen haben, und alle Ergebnisse in einem einzigen Resultset anzeigen möchten.
Der UNION Operator wird verwendet, um die Ergebnisse von zwei oder mehr SELECT-Anweisungen in eine einzige Ergebnismenge zu kombinieren. Dabei wird jedoch jeder doppelte Datensatz entfernt. Hier ist ein einfaches Beispiel:
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
In diesem Beispiel werden die Ergebnisse der SELECT-Anweisungen aus table1
und table2
kombiniert und als eine einzige Tabelle ausgegeben, wobei doppelte Datensätze entfernt werden.
Im Gegensatz zum UNION-Operator behält der UNION ALL-Operator alle doppelten Datensätze bei. Er ist in der Regel schneller als der UNION-Operator, da keine zusätzliche Arbeit zum Löschen von Duplikaten erforderlich ist. Hier ist ein Beispiel:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
In diesem Beispiel werden die Ergebnisse der SELECT-Befehle aus table1
und table2
kombiniert und als eine einzige Tabelle ausgegeben, einschließlich aller doppelten Datensätze.
Stellen Sie beim Einsatz von UNION oder UNION ALL sicher, dass die kombinierten SELECT-Anweisungen eine übereinstimmende Anzahl von Spalten haben und die entsprechenden Spalten kompatible Datentypen aufweisen. Andernfalls kann die Anweisung nicht ausgeführt werden.
Zusätzlich zur kombinierten Ergebnismenge können Sie mit ORDER BY auch die Reihenfolge der endgültigen Ergebnisse festlegen. Es ist wichtig zu beachten, dass die ORDER BY-Klausel in der Regel am Ende der gesamten UNION-Anweisung platziert wird und nicht in den einzelnen SELECT-Anweisungen.
Insgesamt ermöglichen UNION und UNION ALL eine effiziente und flexible Datenkombination in SQL und sind leistungsstarke Werkzeuge für das Datenmanagement und die Berichterstellung.