Detta kommer att sätta alla artister vars namn börjar med en bokstav i a-z före de som inte gör det:
SELECT DISTINCT artist
FROM songs
ORDER BY artist REGEXP '^[a-z]' DESC, artist
Se att det fungerar online:sqlfiddle
Men du kanske föredrar att lagra en andra kolumn med det förenklade namnet så att du kan placera dem i en ordning som är mer meningsfull:
artists
artist | simplified_name
------------------------------------
&i | i
+NURSE | nurse
2007excalibur2007 | excalibur
Värdena för simplified_name
kan inte enkelt genereras i MySQL, så du kanske vill använda ett allmänt programmeringsspråk för att dra ut alla artister, omvandla dem till förenklade namn och sedan fylla i databasen med resultaten.
När detta är gjort kan du använda denna fråga:
SELECT DISTINCT artist
FROM artists
ORDER BY simplified_name