Подтвердить что ты не робот

Порядок mysql по фиксированному списку

У меня будет фиксированный список элементов для заказа, который я не буду знать, пока не запустил запрос, так как есть шаг рандомизации.

Я хотел бы иметь что-то вроде следующего:

предположим, что is_launch_set вернет 1,3,7,11, но рандомизирован ниже:

select * from items where is_launch_set=1 order by id values (3,11,7,1);

какие-либо идеи о том, как достичь этого? Я думал, может быть, find_in_set, но не совсем уверен.

4b9b3361

Ответ 1

Вы можете сделать это, используя либо:

ORDER BY FIND_IN_SET(id, '3,11,7,1')

или

ORDER BY FIELD(id, 3, 11, 7, 1)

или

ORDER BY CASE id WHEN 3 THEN 0
                WHEN 11 THEN 1
                 WHEN 7 THEN 2
                 WHEN 1 THEN 3
                        ELSE 4
         END