2011-07-25 28 views
16

tengo una lista de números: 7,1,3,2,123,55 (que son los identificadores de los registros existentes)MySQL ordenar por alguna lista

Tengo una tabla MySQL con las columnas y idname, donde id es una clave principal entero. Quiero seleccionar registros de esta tabla, pero en un orden específico, por ejemplo 7, 1, 3, 2, 123, 55.

  • ¿Es posible hacer esto en MyISAM dentro de la consulta, sin ningún procesamiento posterior?
  • ¿Cuál es la forma más sencilla de hacer esto?

Respuesta

47

Desde 1 < 3 < 77 < 123, un simple ORDER BY id sería suficiente.

Sin embargo, si usted quiere ordenar de esta manera: 77, 3, 123, 1, entonces se podría utilizar la función FIELD():

SELECT id, name 
FROM mytable 
WHERE id IN (77, 3, 123, 1) 
ORDER BY FIELD(id, 77, 3, 123, 1) 
+0

no funciona ... de que este intento SELECT * DE lalala DONDE ID EN (8,9,4,5) PEDIDO POR CAMPO (8,9,4,5) Y OBTENIDO: 4,5,8,9 ... registros –

+2

Mi error. Debería ser 'FIELD (id, ...)' –