Isso colocará todos os artistas cujos nomes começam com uma letra de a-z antes daqueles que não têm:
SELECT DISTINCT artist
FROM songs
ORDER BY artist REGEXP '^[a-z]' DESC, artist
Veja funcionando online:sqlfiddle
Mas você pode preferir armazenar uma segunda coluna com o nome simplificado para poder colocá-las em uma ordem que faça mais sentido:
artists
artist | simplified_name
------------------------------------
&i | i
+NURSE | nurse
2007excalibur2007 | excalibur
Os valores para
simplified_name
não pode ser gerado facilmente no MySQL, então você pode querer usar uma linguagem de programação de propósito geral para extrair todos os artistas, transformá-los em nomes simplificados e então preencher o banco de dados com os resultados. Feito isso, você pode usar esta consulta:
SELECT DISTINCT artist
FROM artists
ORDER BY simplified_name