2010-03-12 4 views
16

Eventuali duplicati:
Ordering by the order of values in a SQL IN() clauseCon un SELECT ... WHERE id IN (...), ordina i risultati con IN()?

Con una ricerca del tipo:

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

è possibile ordinare i risultati per il contenuto della clausola?

Il risultato che sto cercando sarebbe qualcosa di simile:

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

+1 bella domanda – rodrigoap

+0

domanda molto interessante, mi sono chiesto troppo. – anthares

+0

Questa potrebbe essere una bella domanda, ma è un duplicato: http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in-a-sql-in-clause –

risposta

5

La clausola IN definisce un set, e un set per la matematica non ha alcun ordine.

Tuttavia sembra che ci sia una soluzione per MySQL utilizzando la funzione FIELD():

+2

Sì, lo è possibile modificando la query SQL. Vedi qui: http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in-a-sql-in-clause –

+0

@Felix: Grazie per il suggerimento. Modificata la mia risposta per renderla più accurata. –

+0

Fantastico, grazie! – Jeff

Problemi correlati