ho la seguente tabellaordine Mantenere in MySQL "IN" di query
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;
poi cerco di ottenere i record in base alla chiave primaria
SELECT * FROM foo f where f.id IN (2, 3, 1);
Allora ottengo il seguente risultato
+----+--------+
| id | name |
+----+--------+
| 1 | first |
| 2 | second |
| 3 | third |
+----+--------+
3 rows in set (0.00 sec)
Come si può vedere, il risultato è ordinato da id. Quello che sto cercando di ottenere è ottenere i risultati ordinati nella sequenza che sto fornendo nella query. Dato questo esempio deve restituire
+----+--------+
| id | name |
+----+--------+
| 2 | second |
| 3 | third |
| 1 | first |
+----+--------+
3 rows in set (0.00 sec)
Controlla questa risposta sul sito MySQL: http://forums.mysql.com/read.php?97,210905,210918#msg-210918 - Penso che ti troverai nei guai in attesa di() comportarsi in questo modo MySQL in realtà non ordina i risultati a meno che tu non lo dica esplicitamente, e non hai nulla nei dati che lo ordinerà nel modo desiderato. – artlung