MySQL sort order by array value

ORDER BY field(id, 9, 1, 4);

http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field


You want to get a list of items with the ids 5, 2, 1, 3 and output them in the same order. However, just running a select query will return the items in the order 1, 2, 3, 5.

To order the results correctly you need to build a list of ORDER BY items describing the weights of the ids. This will look like

ORDER BY id = 5 DESC, id = 2 DESC, id = 1 DESC, id = 3 DESC