Order By
in der UNION-Abfrage implementierenBei der Datenbankprogrammierung kombiniert eine UNION-Abfrage Ergebnisse aus verschiedenen Tabellen oder Unterabfragen. Die direkte Verwendung von ORDER BY in einer UNION-Anweisung kann jedoch zu Ausnahmen führen, wenn Daten aus mehreren Tabellen extrahiert werden und die Ergebnisse sortiert werden müssen. Wie im folgenden Beispiel gezeigt:
<code class="language-sql">SELECT table1.field1 FROM table1 ORDER BY table1.field1 UNION SELECT table2.field1 FROM table2 ORDER BY table2.field1</code>
Diese Abfrage schlägt fehl, insbesondere wenn die MS Access Jet-Datenbank-Engine verwendet wird. Die Lösung besteht darin, jede Unterabfrage in eine eigene ORDER BY-Klausel einzuschließen:
<code class="language-sql">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</code>
Die ORDER BY-Anweisung wird auf jede Unterabfrage einzeln angewendet, indem die Unterabfrage in Klammern eingeschlossen und ihr ein Alias zugewiesen wird (DUMMY_ALIAS1 und DUMMY_ALIAS2). Dadurch wird die korrekte Reihenfolge der kombinierten Ergebnisse sichergestellt, ohne dass es zu Fehlern kommt.
Das obige ist der detaillierte Inhalt vonWie kann ich ORDER BY in UNION-Abfragen korrekt verwenden, um Fehler zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!