Question

Je dois utiliser le tri naturel avec un résultat MySQL car il trie actuellement mes valeurs INT comme suit:

  • 1
  • 123
  • 1256
  • 22
  • 231

[etc]

Alors que je aurais besoin pour trier comme

  • 1
  • 22
  • 231
  • 1256

Je connais la fonction « natsort », mais il ne fonctionne pas pour un résultat de requête MySQL. Comment trier (naturellement), est-il possible de le faire dans la requête?

Merci pour l'aide!

EDIT: Exemple $result = mysql_query("SELECT * FROM forums ORDER BY 'posts' DESC;"); de requête

Pas tout à fait sûr que mon utilisation de DESC il est valable, mais il ne jette pas une erreur si elle doit être bien. Malheureusement, il semble changer à l'ASC DESC a aucun effet ...

Était-ce utile?

La solution

La requête que vous avez posté il trie par une expression constante de chaîne plutôt que d'un nom de colonne ou la position. Soit utiliser pour citer des contre-apostrophes, ou prendre les citations:

SELECT * FROM forums ORDER BY `posts` DESC

ou peut-être

SELECT * FROM forums ORDER BY posts DESC

expliquerait pourquoi le changement entre les ASC et DESC n'a pas d'effet.

Première réponse:

L'ordre de tri que vous décrivez suggère les valeurs INT sont effectivement stockées sous la forme d'un type de caractères (ou peut-être converti caractère avant le tri).

Vérifiez si vous stockez les données dans un type numérique ou caractère. Si possible, utilisez un type numérique, l'ordre de tri naturel sera comme vous avez besoin. Si vous ne peut pas modifier le type de données sous-jacentes à l'INT, alors vous pouvez le faire dans votre requête (par exemple en utilisant CAST ), probablement au coût de la performance.

Autres conseils

Si les messages était une colonne non-INT, vous pouvez essayer ceci:

SELECT * FROM forums ORDER BY CAST(`posts` AS INT) DESC

Voir aussi http://drupal.org/project/natsort . Ceci est un module Drupal qui peut être utilisé pour faciliter le tri MySQL.

Cette question a une réponse pour MySQL que je l'ai utilisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top