Aller au contenu

Comportement du IN sur l'ordre des résultats


Sujets conseillés

Posté

Bonjour,

Voilà, j'ai une requète du type :

SELECT id_categorie, nom
FROM categories
WHERE id_categorie IN (valeurA, valeur B, valeurC)

Je ne vois pas comment faire pour être sûr que les résultats me soient restitués dans l'ordre des valeurs fournies. Je m'explique : si valeurA vaut 23, valeurB 2 et valeur3 158, je veux que mon résultat récupéré soit

23 - nomdu23

2 - nomdu2

158 - nomdu158

Est-ce le cas par défaut avec un IN, ou sinon quelqu'un connaîtrait-il le truc pour obtenir ça ?

Merci

Posté

Hello,

non "IN( )" ne fait aucun tri. Et le seul moyen d'être certain d'avoir les données dans un certain ordre est d'utiliser ORDER BY (voir GROUP BY, mais sous certaines conditions).

Posté

ORDER BY étant ici inutilisable puisqu'il s'agit d'un ordonnancement suivant la fourniture des paramètres, et non d'un ordonnancement suivant leur valeur ...

Et zut ! Obligé de faire un tri bidon pour 3 fois rien.

Merci Kioob :)

Posté

à noter que tu peux faire des ORDER complexes quand même :

order by if( id_categorie = valeurA, 1, if( id_categorie = valeurB, 2, 3 ) )

Je n'ai pas regardé dans la doc, mais il y a peut être aussi un switch/case.

Il me semble qu'on a déjà parlé ici même des autres possibilités, telles que l'utilisation de champs ENUM.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...