我有一个简单的查询:
SELECT data FROM table WHERE id IN (5, 2, 8, 1, 10)
问题是,我如何选择我的数据并像在我的 IN 中一样对其进行排序。
顺序必须是 5、2、8、1、10。
问题是我没有订购 key 。 IN 数据来自其他查询 (1),但我需要安全排序。
有什么解决办法吗?
(1)
SELECT login
FROM posts
LEFT JOIN users ON posts.post_id=users.id
WHERE posts.post_n IN (
2280219,2372244, 2345146, 2374106, 2375952, 2375320, 2371611, 2360673, 2339976, 2331440, 2279494, 2329266, 2271919, 1672114, 2301856
)
感谢您的帮助,解决方案有效但速度很慢,也许以后会找到更好的东西,无论如何还是比 x
最佳答案
我认为按任意列表排序的唯一方法是对该列表中的每个项目进行 ORDER BY
比较。这很丑陋,但它会起作用。您最好在进行选择的任何代码中进行排序。
SELECT data FROM t1 WHERE id IN (5, 2, 8, 1, 10)
ORDER BY id = 10, id = 1, id = 8, id = 2, id = 5
顺序颠倒了,否则您必须向每个条件添加 DESC
。
关于MySQL 按 IN 顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15456481/