一尘不染

mysql按固定顺序排列

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,但不是很确定。


阅读 262

收藏
2020-05-17

共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
2020-05-17