Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL sort order by array value

I need to run a MySQL query where the order is determined by an array value.

My array is variable but the values in the array correspond to a field in my DB table called 'ID' so I want the result to be returned in the ID order 9, 1, 4.

Array ( [0] => 9 [1] => 1 [2] => 4 ) 

Is this possible in MySQL or would it be possible to sort the MySQL $result using the array after? You can assume the only values being returned are those in the array.

like image 750
Marty Avatar asked Nov 08 '11 18:11

Marty


2 Answers

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

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

like image 130
lanzz Avatar answered Oct 14 '22 14:10

lanzz


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 
like image 43
hari jee Avatar answered Oct 14 '22 16:10

hari jee