Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como classificar os resultados do MySQL com letras primeiro, símbolos por último?


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