2010-05-11 19 views
12

¿Hay alguna manera de mantener el orden al usar SELECCIONAR DONDE EN()? Por ejemplo, utilizando la siguiente consulta:¿Cómo se mantiene el orden usando SELECT WHERE IN()?

SELECT id FROM data_table WHERE id IN(56,55,54,1,7); 

Los resultados van a volver usando el orden predeterminado por id. 1,7,54,55,56

Cuando quiero mantener el orden utilizado en el IN: 56,55,54,1,7

¿Hay una manera rápida de hacer esto en MySQL o voluntad Me veo obligado a pedirlo después en el código.

Gracias :)

Respuesta

37

Uso FIND_IN_SET:

ORDER BY FIND_IN_SET(id, '56,55,54,1,7') 
+0

+1 - Nunca he pensado en eso. Buena idea –

+0

Gracias! Eso fue rápido. Funciona a la perfección :) – Pepper

+0

Una pregunta, esto hace que la consulta utilice una clasificación de archivos. ¿Debería preocuparme el rendimiento con este método? ¿O es esta una pregunta para un hilo diferente? – Pepper

0

que podría hacer un sindicato, que podría devolver el pedido de la misma manera.

PERO:

Por qué no sólo tiene su aplicación reordenar los resultados cuando los recibe, en lugar de forzar la base de datos para hacerlo?

+2

El DB escalará el pedido mucho mejor de lo que su aplicación podría hacer. 10 registros no son nada, ¿y si el conjunto de resultados es 10,000 o millones? –

Cuestiones relacionadas