2017-10-29 5 views
0

Beispiel:Sortieren von Daten nach Buchstaben zuerst, dann Ziffern

32 BB 
12 A 
84 H 
13 H 
34 C 
16 C 
115 H 
18 C 

Ich möchte, dass sie wie folgt bestellen:

12 A 
32 BB 
16 C 
18 C 
34 C 
13 H 
84 H 
115 H 

Hier ist, was ich bisher ausprobiert habe:

SELECT * 
FROM people 
ORDER BY IF(data_name RLIKE '^[a-z]', 2, 3), data_name 

Diese SQL-Abfrage sortiert sie ähnlich wie sie unsortiert sind. Wie kann ich das erreichen?

+0

Versuchen ORDER BY IF (DATA_NAME RLIKE '^ [az]', 4,2), DATA_NAME – Grantly

+1

Welche Datenbank verwenden Sie? Sind die Daten in einer Spalte oder zwei? –

+0

Gleiches Ergebnis, Grantly. Ich denke, ich benutze MariaDB, Gordon. Entweder das oder InnoDB. Ich habe versucht, es nachzuschlagen, bevor ich die Frage gepostet habe, aber ich habe es nicht gefunden:/ – Erik

Antwort

1

Wenn die Daten in zwei Spalten sind (das ist, wie ich die Frage und Beispieldaten interpretieren), dann tut einfach:

order by col2, col1 

Wenn die Daten in einer Spalte ist, dann werde ich denke, von den rlike dass Sie MySQL verwenden, können Sie tun:

order by substring_index(col, ' ', -1), substring_index(col, ' ', 1) + 0 
+0

Vielen Dank! Deine Antwort hat perfekt funktioniert! Wenn ich die Werte in zwei Spalten hätte, würde ich euch nicht fragen;) – Erik

+0

Noch eine Frage. Wie kann ich es rückwärts sortieren? Also kommt '115 H' zuerst in der Liste und '12 A' zuletzt? – Erik

+1

@Erik. . . Sie setzen 'DESC' nach jeder Taste' order by'. –

Verwandte Themen