Heim > Datenbank > MySQL-Tutorial > Wie kann ich Ergebnisse in separaten Abschnitten einer MySQL UNION-Abfrage sortieren?

Wie kann ich Ergebnisse in separaten Abschnitten einer MySQL UNION-Abfrage sortieren?

Barbara Streisand
Freigeben: 2025-01-11 11:29:42
Original
309 Leute haben es durchsucht

How Can I Sort Results Within Separate Sections of a MySQL UNION Query?

Ergebnisse nach Abschnitt in der MySQL UNION-Abfrage sortieren

Einführung:

Wenn Sie zum Abfragen von Daten mehrere SELECT-Anweisungen in Kombination mit UNION verwenden, müssen Sie die Ergebnisse entsprechend nach Titel sortieren und gleichzeitig die Unabhängigkeit jeder Abfrage wahren.

Frage:

Ein Szenario besteht darin, dass drei SELECT-Abfragen Daten basierend auf unterschiedlichen Entfernungskriterien für die Website-Suche abrufen. Die erste Abfrage ruft Daten für genaue Standortsuchen ab, die zweite Abfrage ruft Daten innerhalb von 5 Kilometern ab und die dritte Abfrage ruft Daten innerhalb von 5–15 Kilometern ab. Abfrageergebnisse werden mithilfe von UNION kombiniert und auf einer Seite mit einem Titel angezeigt. Der Benutzer möchte jedoch die Ergebnisse unter jeder Überschrift nach ID oder Add-Datum sortieren.

Lösung:

Um dies zu erreichen, führt MySQL für jede SELECT-Anweisung eine Pseudospalte mit dem Namen „rank“ ein. Diese Pseudospalte kann verwendet werden, um die Ergebnisse zunächst zu sortieren, bevor andere Sortierkriterien angewendet werden. Die folgende modifizierte Abfrage veranschaulicht diesen Ansatz:

<code class="language-sql">SELECT *
FROM (
    SELECT 1 AS Rank, id, add_date FROM Table
    UNION ALL
    SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < 5
    UNION ALL
    SELECT 3 AS Rank, id, add_date FROM Table WHERE distance BETWEEN 5 AND 15
) AS RankedResults
ORDER BY Rank ASC, id DESC, add_date DESC;</code>
Nach dem Login kopieren

Erklärung:

  1. Pseudospalte „Rank“: In jeder SELECT-Anweisung wird eine Pseudospalte mit dem Namen „Rank“ eingeführt und ihr werden eindeutige Werte (1, 2 und 3) zugewiesen. Diese Spalte stellt die Reihenfolge oder Gruppierung der Ergebnisse dar.

  2. Erste Sortierung nach „Rang“: UNION-Ergebnisse werden zunächst nach der Spalte „Rang“ in aufsteigender Reihenfolge sortiert. Dadurch wird sichergestellt, dass die Ergebnisse nach ihrem jeweiligen Titel gruppiert werden („Genaue Ergebnisse“, „Ergebnisse im Umkreis von 5 km“ und „Ergebnisse im Umkreis von 5–15 km“).

  3. Zusätzliche Sortierung nach „id“ und „add_date“: Innerhalb jeder Gruppierung (bestimmt durch „Rank“) werden die Ergebnisse weiter nach „id“ und „add_date“ in absteigender Reihenfolge sortiert.

Hinweis:

Diese Methode verwendet die UNION ALL-Operation, die doppelte Zeilen im kombinierten Ergebnis enthält. Wenn Sie keine doppelten Zeilen benötigen, können Sie die UNION-Operation verwenden, die Duplikate eliminiert.

Das obige ist der detaillierte Inhalt vonWie kann ich Ergebnisse in separaten Abschnitten einer MySQL UNION-Abfrage sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage