Como ordeno uma tabela MySQL por duas colunas?
O que eu quero são artigos classificados primeiro pelas classificações mais altas e depois pela data mais recente. Como exemplo, isso seria um exemplo de saída (o número da esquerda é a classificação, o título do artigo e a data do artigo)
50 Este artigo é demais | 4 Fev 2009 35 Este artigo é muito bom | 1 Fev 2009 5 Este artigo não é tão quente | 25 Jan 2009
O SQL relevante que estou usando é:
ORDER BY article_rating, article_time DESC
Eu posso classificar por um ou outro, mas não ambos.
mysql
sql-order-by
billynoah
fonte
fonte
classificará por article_time apenas se houver dois artigos com a mesma classificação. Pelo que posso ver no seu exemplo, é exatamente isso que acontece.
mas considere:
fonte
DESC
no final, as duas colunas serão ordenadas por ordem decrescente. Você deve especificarASC
se deseja o contráriofonte
Isso talvez ajude alguém que está procurando a maneira de classificar a tabela por duas colunas, mas de maneira paralela. Isso significa combinar duas classificações usando a função de classificação agregada. É muito útil quando, por exemplo, recuperar artigos usando a pesquisa de texto completo e também sobre a data de publicação do artigo.
Este é apenas um exemplo, mas se você pegar a ideia, poderá encontrar muitas funções agregadas para usar. Você pode até ponderar as colunas para preferir uma sobre o segundo. A função minha leva a extremos de ambos os tipos, portanto, as linhas mais valorizadas estão no topo.
Desculpe se existem soluções mais simples para fazer esse trabalho, mas não encontrei nenhuma.
fonte
A seguir, os dados serão solicitados, dependendo da coluna em ordem decrescente.
fonte