2010-03-12 18 views
16

Duplicar posible:
Ordering by the order of values in a SQL IN() clauseCon un SELECT ... WHERE id IN (...), ordene los resultados por IN()?

Con una consulta como:

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

es posible ordenar los resultados por el contenido de la cláusula IN?

El resultado Busco sería algo así como:

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

+1 buena pregunta – rodrigoap

+0

pregunta muy interesante, me he preguntado también. – anthares

+0

Esta podría ser una buena pregunta, pero es un duplicado: http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in-a-sql-in-clause –

Respuesta

5

La cláusula IN define un conjunto, y un conjunto en matemáticas no tiene fin.

Sin embargo parece que hay una solución para MySQL utilizando la función FIELD():

+2

Sí, es posible al ajustar la consulta SQL. Vea aquí: http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in-a-sql-in-clause –

+0

@Felix: Gracias por la sugerencia. Modifiqué mi respuesta para hacerlo más preciso. –

+0

¡Impresionante, gracias! – Jeff

Cuestiones relacionadas