Können Sie durch eine bedingte Anweisung sortieren?
In SQL können Sie mit der ORDER BY-Klausel die Reihenfolge angeben, in der Ihre Ergebnisse angezeigt werden zurückgegeben werden. Was aber, wenn Sie Ihre Ergebnisse dynamisch nach einer bestimmten Bedingung sortieren möchten?
Problem:
Ein Benutzer möchte Daten je nach Wert in a unterschiedlich sortieren Spalte mit dem Namen „Typ“. Wenn der Typ „Mitglied“ ist, möchten sie nach Nachnamen sortieren, und wenn es „Gruppe“ ist, möchten sie nach Gruppennamen sortieren, beide in aufsteigender Reihenfolge.
Erster Ansatz:
Der Benutzer hat versucht, eine if-Anweisung in der ORDER BY-Klausel zu verwenden:
ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC
Lösung:
Obwohl das Konzept korrekt ist, SQL unterstützt keine if-Anweisungen innerhalb der ORDER BY-Klausel. Stattdessen können Sie entweder die IF-Funktion oder die CASE-Anweisung verwenden.
Verwendung der IF-Funktion:
ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC
Dieser Ansatz verwendet die IF-Funktion, um die Bedingung auszuwerten und geben Sie das entsprechende Sortierfeld zurück.
Verwenden der CASE-Anweisung:
ORDER BY CASE `type` WHEN 'Member' THEN LNAME WHEN 'Group' THEN GROUPNAME ELSE 1 END ASC
Die CASE-Anweisung bietet eine umfassendere Möglichkeit, mehrere Bedingungen zu verarbeiten und verschiedene Sortierfelder zurückzugeben basierend auf jeder Bedingung.
Das obige ist der detaillierte Inhalt vonWie sortiert man Daten dynamisch basierend auf einer bedingten Anweisung in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!