Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie sortiere ich MySQL-Ergebnisse mit Buchstaben zuerst und Symbolen zuletzt?

Dadurch werden alle Künstler, deren Namen mit einem Buchstaben in a-z beginnen, vor denen platziert, die dies nicht tun:

SELECT DISTINCT artist
FROM songs
ORDER BY artist REGEXP '^[a-z]' DESC, artist

Sehen Sie, wie es online funktioniert:sqlfiddle

Vielleicht ziehen Sie es aber vor, eine zweite Spalte mit dem vereinfachten Namen zu speichern, damit Sie sie in einer sinnvolleren Reihenfolge anordnen können:

artists

artist            | simplified_name
------------------------------------
&i                | i
+NURSE            | nurse
2007excalibur2007 | excalibur

Die Werte für simplified_name kann in MySQL nicht einfach generiert werden, daher möchten Sie vielleicht eine Allzweck-Programmiersprache verwenden, um alle Künstler herauszuziehen, sie in vereinfachte Namen umzuwandeln und dann die Datenbank mit den Ergebnissen zu füllen.

Sobald dies erledigt ist, können Sie diese Abfrage verwenden:

SELECT DISTINCT artist
FROM artists
ORDER BY simplified_name