Garantiert UNION ALL die Reihenfolge in Ergebnismengen?
In SQL kombiniert der UNION ALL-Operator die Ergebnisse mehrerer SELECT-Anweisungen. Es ist jedoch keine Garantie für die Reihenfolge der Ergebnisse. Ohne eine ORDER BY-Klausel ist die Reihenfolge der Zeilen undefiniert und kann variieren.
Betrachten Sie das in der Frage bereitgestellte Beispiel:
SELECT 'O' UNION ALL SELECT 'R' UNION ALL SELECT 'D' UNION ALL SELECT 'E' UNION ALL SELECT 'R'
Es ist möglich, dass die Ergebnisse anders sind in der Reihenfolge „O-R-D-E-R“ angezeigt werden, es gibt jedoch keine Garantie. Die Reihenfolge kann abhängig von Faktoren wie der Datenbank-Engine, der Datenverteilung und anderen Optimierungen unterschiedlich sein.
Um eine bestimmte Reihenfolge durchzusetzen, muss eine ORDER BY-Klausel verwendet werden. Für das gegebene Beispiel kann die SortOrder-Spalte zu jeder SELECT-Anweisung hinzugefügt werden:
SELECT 'O', 1 SortOrder UNION ALL SELECT 'R', 2 UNION ALL SELECT 'D', 3 UNION ALL SELECT 'E', 4 UNION ALL SELECT 'R', 5 ORDER BY SortOrder
Diese Abfrage sortiert die Ergebnisse explizit in der Reihenfolge „O-R-D-E-R“. Bitte beachten Sie, dass das Hinzufügen der Spalte „SortOrder“ nur erforderlich ist, wenn die gewünschte Reihenfolge von der Standardreihenfolge abweicht (die in diesem Fall undefiniert ist).
Das obige ist der detaillierte Inhalt vonBehält „UNION ALL' die Reihenfolge der Zeilen in SQL-Ergebnissätzen bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!