MySQL WHERE IN结果乱序

HaL*_*eEk 1 mysql

我正在使用此查询:

SELECT * FROM `challenges` WHERE id IN (#, #, #, #)
Run Code Online (Sandbox Code Playgroud)

其中#是与单行关联的4个ID号.这很好用,因为它允许我在一个查询中从表中提取4行,但是它有一个奇怪的问题.我不知道它为什么会这样,但结果中行的顺序与我在查询中的顺序不一样.例如:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142)
Run Code Online (Sandbox Code Playgroud)

我希望他们按照这个顺序出来,但他们却这样出来:

108,134,142,208

我注意到的唯一事情是challenge表中的每一行都有一个名为"first_recorded"的字段,来自该查询的行的顺序按该字段按升序排序.有没有办法强制查询按照订购ID的顺序排序结果?

Max*_*sky 5

您需要按字段排序

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142) ORDER BY FIELD(id, 108,208,134,142)
Run Code Online (Sandbox Code Playgroud)