tengo la siguiente tablaMantener el orden en MySQL "IN" consulta
DROP TABLE IF EXISTS `test`.`foo`;
CREATE TABLE `test`.`foo` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
entonces trato de obtener los registros en base a la clave primaria
SELECT * FROM foo f where f.id IN (2, 3, 1);
luego me sale el siguiente resultado
+----+--------+
| id | name |
+----+--------+
| 1 | first |
| 2 | second |
| 3 | third |
+----+--------+
3 rows in set (0.00 sec)
Como se puede ver, el resultado se ordena por id. Lo que intento lograr es obtener los resultados ordenados en la secuencia que estoy proporcionando en la consulta. Teniendo en cuenta este ejemplo debería devolver
+----+--------+
| id | name |
+----+--------+
| 2 | second |
| 3 | third |
| 1 | first |
+----+--------+
3 rows in set (0.00 sec)
Compruebe esta respuesta en el sitio de MySQL: http://forums.mysql.com/read.php?97,210905,210918#msg-210918 - Creo que tendrá problemas para esperar en() comportarse así MySQL realmente no ordena los resultados a menos que explícitamente lo indique, y no tiene nada en los datos que lo ordenarán de la manera que desee. – artlung