MySQL 按 IN 顺序排序

标签 mysql sql-order-by

我有一个简单的查询:

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/

相关文章:

php - 使用 PHP 创建一个高效的好友列表

java - 如何生成唯一ID

mysql - 如果什么都找不到,我该如何加入其他事件? MySQL

mysql - GROUP BY 将多个值分组为同一组

mysql 精细具体命令类别

mysql - 如何使用 hibernate 在多对一关系中映射复合主键

java - 如何在条件查询中的非实体字段上创建orderby?

c# - 按日期排序子节点 - Razor Umbraco

mysql - 如何在 SELECT 查询中按多列排序?

php - MySQL ORDER BY 不同的表列但是