2010-03-12 7 views
16

Possible en double:
Ordering by the order of values in a SQL IN() clauseAvec un SELECT ... WHERE id IN (...), ordonner les résultats par IN()?

Avec une requête telle que:

SELECT * FROM images WHERE id IN (12,9,15,3,1) 

est-il possible de trier les résultats par le contenu de la clause IN?

Le résultat que je suis à la recherche serait quelque chose comme:

[0] => Array 
    (
     [id] => 12 
     [file_name] => foo 
    ) 
[1] => Array 
    (
     [id] => 9 
     [file_name] => bar 
    ) 
[2] => Array 
    (
     [id] => 15 
     [file_name] => baz 
    ) 
... 
+0

+1 belle question – rodrigoap

+0

question très intéressante, je me suis demandé aussi. – anthares

+0

Cela peut être une bonne question, mais il s'agit d'un doublon: http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in-a-sql-in-clause –

Répondre

5

La clause IN définit un ensemble, et un ensemble en mathématiques n'a pas d'ordre.

Cependant, il semble y avoir une solution de contournement pour MySQL en utilisant la fonction FIELD():

+2

Oui c'est possible en peaufinant la requête SQL. Voir ici: http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in-a-sql-in-clause –

+0

@Fixix: Merci pour le conseil. J'ai modifié ma réponse pour la rendre plus précise. –

+0

Génial, merci! – Jeff

Questions connexes