Comment trier une table MySQL sur deux colonnes?
Ce que je veux, ce sont des articles triés par les notes les plus élevées d'abord, puis par date la plus récente. À titre d'exemple, ce serait un exemple de sortie (# gauche est la note, puis le titre de l'article, puis la date de l'article)
50 | Cet article est génial | 4 févr.2009 35 | Cet article est assez bon | 1 févr.2009 5 | Cet article n'est pas si chaud | 25 janv.2009
Le SQL pertinent que j'utilise est:
ORDER BY article_rating, article_time DESC
Je peux trier par l'un ou l'autre, mais pas les deux.
mysql
sql-order-by
billynoah
la source
la source
ne triera par article_time que s'il y a deux articles avec la même note. D'après tout ce que je peux voir dans votre exemple, c'est exactement ce qui se passe.
mais considérez:
la source
DESC
à la fin sera trié par les deux colonnes décroissantes. Vous devez spécifierASC
si vous le souhaitez autrementla source
Cela peut peut-être aider quelqu'un qui cherche le moyen de trier le tableau sur deux colonnes, mais de manière parallèle. Cela signifie combiner deux tris à l'aide de la fonction de tri agrégé. Il est très utile, par exemple, pour récupérer des articles à l'aide de la recherche en texte intégral et également concernant la date de publication de l'article.
Ce n'est qu'un exemple, mais si vous saisissez l'idée, vous pouvez trouver beaucoup de fonctions d'agrégation à utiliser. Vous pouvez même pondérer les colonnes pour en préférer une à la seconde. La fonction de la mienne prend des extrêmes des deux sortes, donc les lignes les plus valorisées sont en haut.
Désolé s'il existe des solutions plus simples pour faire ce travail, mais je n'en ai trouvé aucune.
la source
Les éléments suivants classeront vos données en fonction des deux colonnes dans l'ordre décroissant.
la source