Zeilen mit einem bestimmten Wert zuerst zurückgeben
Problem:
Sie möchten Daten abrufen aus einer Tabelle, wobei die Zeilen priorisiert werden, die einen bestimmten Wert in einer bestimmten Spalte enthalten. Die restlichen Zeilen sollten in alphabetischer Reihenfolge basierend auf einer anderen Spalte folgen.
Betrachten Sie eine Beispieltabelle Benutzer mit der folgenden Struktur:
id | name | city |
---|---|---|
1 | George | Seattle |
2 | Sam | Miami |
3 | John | New York |
4 | Amy | New York |
5 | Eric | Chicago |
6 | Nick | New York |
Lösung:
Um Zeilen basierend auf einem bestimmten Wert zu priorisieren und die verbleibenden Zeilen alphabetisch zu ordnen, verwenden Sie Folgendes Abfrage:
ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city
Erklärung:
Der CASE-Ausdruck weist Zeilen einen Prioritätswert von 1 zu, in denen die Stadtspalte mit dem angegebenen Wert übereinstimmt ('New York'). und einen Prioritätswert von 2 für alle anderen Zeilen. Dadurch wird sichergestellt, dass Zeilen, die „New York“ enthalten, zuerst im Ergebnissatz erscheinen.
Der zweite Teil der ORDER BY-Klausel, Stadt, sortiert die Zeilen innerhalb jeder Prioritätsgruppe weiter alphabetisch basierend auf der Stadtspalte.
Diese Abfrage gibt die folgenden Ergebnisse zurück:
id | name | city |
---|---|---|
3 | John | New York |
4 | Amy | New York |
6 | Nick | New York |
1 | George | Seattle |
2 | Sam | Miami |
5 | Eric | Chicago |
Das obige ist der detaillierte Inhalt vonWie priorisiere ich Zeilen mit einem bestimmten Wert und sortiere sie dann in SQL alphabetisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!