我有一个字符串,其中包含很多与我的数据库相对应的 ID。 喜欢:
1,2,3,4,5
然后我执行 mySQL 查询以选择所有这些行:
SELECT * FROM `table` WHERE `id` IN (".$myIDs.")
我希望 mySQL 按照它们在我的 IN() 选择中的顺序返回行。
所以如果我有
2,1,3,4,5
在 PHP 中获取时,我会将 #2 作为第一行。 没有任何 ORDER BY 看起来它首先返回最小的 ID。
如果您需要进一步解释,请告诉我。
最佳答案
您应该能够通过 FIELD()
执行此操作像这样的功能:
SELECT * FROM `table` WHERE `id` IN (2,1,3,4,5) ORDER BY FIELD(`id`, 2,1,3,4,5) DESC
即:
SELECT
*
FROM
`table`
WHERE
`id` IN (".$myIDs.")
ORDER BY
FIELD(`id`, ".$myIDs.") DESC
此博文中的更多信息:Sorting MySQL rows using column values .
关于php - MySQL 在 IN() 中的参数后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291959/