您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL按列表排序

MySQL按列表排序

由于1 < 3 < 77 < 123一个简单ORDER BY id就足够了。

但是,如果您要这样订购:77, 3, 123, 1,则可以使用function

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1) 
ORDER BY FIELD(id, 77, 3, 123, 1)

FIELD返回0时,行不匹配任何您列表中的ID,比上市的IDS返回的数字越小,即一些。这意味着,如果查询匹配的行多于列出的行,则这些行将首先显示。例如:

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 77, 3, 123, 1)

在此示例中,具有ID的400行将首先显示。如果您希望这些行显示在最后,只需反转ID列表并添加DESC

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 1, 123, 3, 77) DESC
MySQL 2022/1/1 18:13:32 有922人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶