Heim > Datenbank > MySQL-Tutorial > Wie sortiere ich Datenbankergebnisse nach verschiedenen Spalten basierend auf einer Bedingung?

Wie sortiere ich Datenbankergebnisse nach verschiedenen Spalten basierend auf einer Bedingung?

Susan Sarandon
Freigeben: 2024-11-18 21:11:02
Original
827 Leute haben es durchsucht

How to Sort Database Results by Different Columns Based on a Condition?

Bedingte Reihenfolge mit ORDER BY verstehen

Bei Datenbankabfragen können Sie mit der ORDER BY-Klausel die Ergebnisse Ihrer Abfrage in einer bestimmten Reihenfolge sortieren Befehl. In einigen Fällen müssen Sie jedoch möglicherweise eine bedingte Sortierung basierend auf dem Wert einer bestimmten Spalte verwenden.

Problem: Sortieren nach verschiedenen Spalten basierend auf dem Typ

Bedenken Sie das Szenario, in dem Sie eine Tabelle mit einer Spalte namens „Typ“ haben, die bestimmt, ob die Zeile einem Mitglied oder einer Gruppe entspricht. Sie möchten die Ergebnisse so sortieren, dass Mitgliedszeilen nach ihrem Nachnamen (LNAME) in aufsteigender Reihenfolge sortiert werden, während Gruppenzeilen nach ihrem Gruppennamen (GROUPNAME) in aufsteigender Reihenfolge sortiert werden.

Falscher Versuch : Verwendung logischer Operatoren

Der bereitgestellte Versuch verwendet logische Operatoren (if, or), um die bedingte Anweisung zu erstellen, was zu einer falschen führt Abfrage:

SELECT * 
  FROM table 
 WHERE STATUS = 'Active' 
 ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC
Nach dem Login kopieren

Lösung: Verwendung der IF-Funktion oder der CASE-Anweisung

Um diese bedingte Reihenfolge zu erreichen, können Sie entweder die IF-Funktion oder die CASE-Anweisung verwenden:

IF-Funktion:

ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC
Nach dem Login kopieren

Hierbei wird das IF verwendet Funktion, um basierend auf dem Wert der TYPE-Spalte zu bestimmen, welche Spalte zum Sortieren verwendet werden soll.

CASE-Anweisung:

ORDER BY 
    CASE `type` 
        WHEN 'Member' THEN LNAME 
        WHEN 'Group' THEN GROUPNAME
        ELSE 1 END 
    ASC
Nach dem Login kopieren

Hierbei wird die CASE-Anweisung zum Auswerten verwendet Wert der TYPE-Spalte und gibt die entsprechende Spalte zum Sortieren zurück. Die ELSE-Klausel mit dem Wert 1 sorgt dafür, dass Zeilen mit unbekannten Typen bis zum Ende sortiert werden.

Das obige ist der detaillierte Inhalt vonWie sortiere ich Datenbankergebnisse nach verschiedenen Spalten basierend auf einer Bedingung?. 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