MySQL,其中的结果是无序的

MySQL,其中的结果是无序的,mysql,Mysql,我正在使用此查询: SELECT * FROM `challenges` WHERE id IN (#, #, #, #) 其中#是与一行关联的4个ID号。这很好,因为它允许我在一个查询中从表中取出4行,但是它有一个奇怪的问题。我不知道为什么会这样,但结果中的行顺序与查询中的行顺序不同。例如: SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142) 我希望他们按照这个顺序出现,但他们却像这样出现: 108134142208 我注

我正在使用此查询:

SELECT * FROM `challenges` WHERE id IN (#, #, #, #)
其中#是与一行关联的4个ID号。这很好,因为它允许我在一个查询中从表中取出4行,但是它有一个奇怪的问题。我不知道为什么会这样,但结果中的行顺序与查询中的行顺序不同。例如:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142)
我希望他们按照这个顺序出现,但他们却像这样出现:

108134142208

我注意到的唯一一点是,challenges表中的每一行都有一个名为“first_recorded”的字段,从这个查询出来的行的顺序是按该字段升序排序的。有没有办法强制查询按照与ID排序相同的顺序对结果排序?

您需要按顺序排序

你需要提前点餐


您可以使用mysql order by字段:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142) ORDER BY FIELD(id, 108, 208, 134, 142);

您可以使用mysql order by字段:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142) ORDER BY FIELD(id, 108, 208, 134, 142);

您必须将查询更改为此

SELECT * FROM `challenges` 
WHERE id IN (108, 208, 134, 142)
ORDER BY ID
如果希望它们的顺序与in语句中的顺序相同,而不考虑数字顺序,则可以使用以下命令

SELECT * FROM `challenges` 
WHERE id IN (108, 208, 134, 142)
ORDER BY FIELD(id,108,208,134,142)

您必须将查询更改为此

SELECT * FROM `challenges` 
WHERE id IN (108, 208, 134, 142)
ORDER BY ID
如果希望它们的顺序与in语句中的顺序相同,而不考虑数字顺序,则可以使用以下命令

SELECT * FROM `challenges` 
WHERE id IN (108, 208, 134, 142)
ORDER BY FIELD(id,108,208,134,142)

不能保证结果是按顺序出现的,您应该明确指定一个
orderby
子句。如果要按id值排序,请执行以下操作:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142) ORDER BY id
对于任意命令:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142)
  ORDER BY FIELD( id, 108, 208, 134, 142 )

不能保证结果是按顺序出现的,您应该明确指定一个
orderby
子句。如果要按id值排序,请执行以下操作:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142) ORDER BY id
对于任意命令:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142)
  ORDER BY FIELD( id, 108, 208, 134, 142 )

我想这和你的问题很相似。哎呀,对不起。我搜索了大约10分钟,但什么也找不到(无可否认,我的谷歌搜索技能并不那么好)。我甚至不认为在我键入问题标题时会出现这种情况。我想这和你的问题很相似。哎呀,对不起。我搜索了大约10分钟,但什么也找不到(无可否认,我的谷歌搜索技能并不那么好)。我甚至不认为在我键入问题标题时会出现这种情况。这比我使用的解决方案要优雅得多,基本上就是说,
按id=108、id=208、id=134、id=142排序。非常感谢。这比我使用的解决方案要优雅得多,基本上就是说,
orderbyid=108,id=208,id=134,id=142
。非常感谢。