Questo metterà tutti gli artisti i cui nomi iniziano con una lettera in a-z prima di quelli che non lo fanno:
SELECT DISTINCT artist
FROM songs
ORDER BY artist REGEXP '^[a-z]' DESC, artist
Guardalo funzionare online:sqlfiddle
Ma potresti preferire memorizzare una seconda colonna con il nome semplificato in modo da poterle inserire in un ordine più sensato:
artists
artist | simplified_name
------------------------------------
&i | i
+NURSE | nurse
2007excalibur2007 | excalibur
I valori per simplified_name
non può essere facilmente generato in MySQL, quindi potresti voler utilizzare un linguaggio di programmazione generico per estrarre tutti gli artisti, trasformarli in nomi semplificati, quindi popolare il database con i risultati.
Una volta fatto, puoi usare questa query:
SELECT DISTINCT artist
FROM artists
ORDER BY simplified_name