MySQL使用WHERE`id` IN指定确切的顺序(...)

Gra*_*Fox 8 mysql sql-order-by in-clause

是否有一种简单的方法可以通过WHERE idIN(...)子句分别订购MySQL结果?例:

SELECT * FROM articles WHERE articles.id IN (4, 2, 5, 9, 3)
Run Code Online (Sandbox Code Playgroud)

回来

Article with id = 4
Article with id = 2
Article with id = 5
Article with id = 9
Article with id = 3
Run Code Online (Sandbox Code Playgroud)

并且

SELECT * FROM articles WHERE articles.id IN (4, 2, 5, 9, 3) LIMIT 2,2
Run Code Online (Sandbox Code Playgroud)

回来

Article with id = 5
Article with id = 9
Run Code Online (Sandbox Code Playgroud)

更新:更具体地说,我想避免篡改括号中的数据WHERE articles.id IN (4, 2, 5, 9, 3),因为这些ID是动态的并且是自动排序的.

bob*_*nce 14

是的,有点:

SELECT * FROM articles
WHERE articles.id IN (4, 2, 5, 9, 3)
ORDER BY FIND_IN_SET(articles.id, '4,2,5,9,3')
Run Code Online (Sandbox Code Playgroud)

但这是非标准的SQL并且有点味道.

  • +1是实用的解决方案.而对于"闻起来有点"的一部分.;) (4认同)

ams*_*raf 5

这对我有用: 按字段排序(Product.id,4,9,8,5,3,11,24,16)