MySQL在IN()中的参数后排序

jac*_*ack 3 php mysql

我的字符串包含许多与我的数据库相对应的ID.喜欢:

1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)

然后我做一个mySQL查询来选择所有这些行:

SELECT * FROM `table` WHERE `id` IN (".$myIDs.")
Run Code Online (Sandbox Code Playgroud)

我希望mySQL按照它们在IN()选择中的顺序返回行.

所以,如果我反而拥有

2,1,3,4,5
Run Code Online (Sandbox Code Playgroud)

在PHP中获取时,我会将#2作为第一行.没有任何ORDER BY,它看起来像是先返回最低的ID.

如果您需要进一步扩展,请告诉我.

jen*_*ram 5

您应该可以通过以下FIELD()功能执行此操作:

SELECT * FROM `table` WHERE `id` IN (2,1,3,4,5) ORDER BY FIELD(`id`, 2,1,3,4,5) DESC
Run Code Online (Sandbox Code Playgroud)

那是:

SELECT
  *
FROM
  `table`
WHERE
  `id` IN (".$myIDs.")
ORDER BY
  FIELD(`id`, ".$myIDs.") DESC
Run Code Online (Sandbox Code Playgroud)

更多博客文章:使用列值对MySQL行进行排序.