Heim >Datenbank >MySQL-Tutorial >Wie ordne ich die Ergebnisse einer SQL UNION richtig an?

Wie ordne ich die Ergebnisse einer SQL UNION richtig an?

Susan Sarandon
Susan SarandonOriginal
2025-01-11 06:03:42470Durchsuche

How to Properly Order Results from a SQL UNION?

UNION und Sortieren in SQL

In SQL ermöglicht uns der UNION-Operator, mehrere SELECT-Anweisungen in einer einzigen Ergebnismenge zu kombinieren. Das Sortieren kombinierter Daten kann jedoch schwierig sein, wenn jede SELECT-Anweisung möglicherweise unterschiedliche Daten zurückgibt.

Betrachten Sie die folgende Abfrage, die Daten aus der Student-Tabelle basierend auf zwei Kriterien abruft:

<code class="language-sql">SELECT id, name, age
FROM Student
WHERE age > 20
UNION
SELECT id, name, age
FROM Student
WHERE Name LIKE "%a%";</code>

Wir möchten die kombinierte Ergebnismenge nach der Namensspalte sortieren. Leider funktioniert die folgende Abfrage nicht wie erwartet:

<code class="language-sql">SELECT id, name, age
FROM Student
WHERE age > 20
ORDER BY name;</code>

In dieser Abfrage wird die ORDER BY-Klausel auf die kombinierten Ergebnisse der WHERE-Bedingungen angewendet und nicht auf die vollständige Ergebnismenge der UNION. Daher werden die Daten nicht sortiert.

Um die kombinierte Ergebnismenge nach Namen zu sortieren, verschieben Sie einfach die ORDER BY-Klausel außerhalb des UNION-Operators:

<code class="language-sql">SELECT id, name, age
FROM Student
WHERE age > 20
UNION
SELECT id, name, age
FROM Student
WHERE Name LIKE "%a%"
ORDER BY name;</code>

In dieser modifizierten Abfrage wird die ORDER BY-Klausel auf den gesamten Ergebnissatz angewendet, um sicherzustellen, dass die kombinierten Daten korrekt sortiert werden.

Das obige ist der detaillierte Inhalt vonWie ordne ich die Ergebnisse einer SQL UNION richtig an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn