Wenn Sie SQL-Abfragen verwenden, um Daten aus mehreren Tabellen mithilfe des UNION-Operators zu kombinieren, müssen Sie die Ergebnisse häufig sortieren. Das einfache Hinzufügen einer ORDER BY-Klausel am Ende der Abfrage kann jedoch zu Fehlern führen.
Betrachten Sie das folgende Beispiel:
<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 versucht, die Ergebnisse einer UNION-Operation zu sortieren, löst jedoch eine Ausnahme aus, da die ORDER BY-Klausel außerhalb der Klammern, die die einzelnen SELECT-Anweisungen umgeben, nicht zulässig ist.
Um eine UNION-Abfrage korrekt anzuordnen, müssen Sie in jede SELECT-Anweisung eine ORDER BY-Klausel einfügen. Dadurch wird sichergestellt, dass die einzelnen Datensätze vor der Zusammenführung sortiert werden. So schreiben Sie die obige Abfrage um, um die Ergebnisse korrekt zu ordnen:
<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>
Bei diesem Ansatz werden die einzelnen Datensätze in Klammern sortiert, bevor sie mit UNION ALL kombiniert werden. Die kombinierten Ergebnisse werden dann gemäß den Anforderungen der ORDER BY-Klausel in der äußersten SELECT-Anweisung geordnet.
Das obige ist der detaillierte Inhalt vonWie ordne ich die Ergebnisse einer SQL UNION-Abfrage richtig an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!