Mysql 如何使用IN子句显示结果?

Mysql 如何使用IN子句显示结果?,mysql,Mysql,上面的查询根据查询给出asc订单的结果,但当我更改订单时,如83被84替换,84被83替换,它再次给出asc订单结果。我想根据查询显示结果。您可以使用find\u in\u setorder by子句: SELECT * FROM `students` WHERE `id` IN (83,84); SELECT * FROM `students` WHERE `id` IN (83, 84) ORDER BY FIELD(`id`, 83, 84); 关于在集合中查找的简要说明: 说明

上面的查询根据查询给出asc订单的结果,但当我更改订单时,如83被84替换,84被83替换,它再次给出asc订单结果。我想根据查询显示结果。

您可以使用
find\u in\u set
order by子句:

SELECT * FROM `students` WHERE `id` IN (83,84);
SELECT * 
FROM `students` 
WHERE `id` IN (83, 84)
ORDER BY FIELD(`id`, 83, 84);
关于
在集合中查找的简要说明

说明

MySQL FIND_IN_SET()
返回字符串在字符串列表中的位置(作为子字符串)。字符串列表本身是一个字符串,包含由“,”(逗号)字符分隔的子字符串

当字符串列表中不存在搜索字符串时,此函数返回0;如果任一参数为
NULL
,则返回
NULL

语法

SELECT 
* 
FROM `students` 
WHERE `id` IN (83,84)
ORDER BY FIND_IN_SET(id,'83,84')
参数

FIND_IN_SET (search string, string list)

或者,您可以使用
FIELD()
函数来完成此任务,您可以使用:


SQL行不会以任何特定顺序返回,除非指定order by子句:

SELECT * FROM `students` WHERE `id` IN (83,84);
SELECT * 
FROM `students` 
WHERE `id` IN (83, 84)
ORDER BY FIELD(`id`, 83, 84);
是的,有时MySQL将返回按主键排序的行,有时它将遵循插入顺序,但这不能保证

如果要返回按IN元素排序的行,必须指定ORDER by,诀窍是使用字段字符串函数:

SELECT * FROM `students` WHERE `id` IN (83,84) ORDER BY ID asc

数字将自动转换为字符串,字段(83,83,84)将返回1,字段(84,83,84)将返回2,其他任何内容都将返回0。

中的顺序与记录的显示顺序无关。
按字段排序(id,83,84)
如果您希望84是第一个,那么
按字段排序(id,84,83)
可能涉及的对象:找不到被否决的原因。这是我发誓的方式之一!如果我能知道原因,我会很高兴的。谢谢大家!@1000111我认为你的答案是正确的,不知道为什么它被否决了,在这个上下文中,find_in_set和find函数都是等价的……否决后,我仔细检查了所有内容。但是没有发现任何问题。感谢您提倡这种方法@fthiellaThanks让我知道它对您有效@RoshanSankhe