mysql 按自定义顺序对结果排序[duplicate]

kdfy810k  于 2022-11-28  发布在  Mysql
关注(0)|答案(1)|浏览(246)

此问题在此处已有答案

MySQL - ORDER BY values within IN()(6个答案)
昨天关门了。
是否可以按照数组提供的自定义顺序对MySQL结果或Laravel Collection进行排序?
例如,假设您希望按位置对事件列表进行排序,用户告诉您他们在西班牙,而您有几个其他事件发生在世界其他国家。
您希望对事件进行大致排序以适合其位置:首先是西班牙,然后是葡萄牙、法国、意大利、英国、德国等。
因此,您有一个针对西班牙语用户的数组:[Spain, Portugal, France, Italy, UK, Germany],并且数据库中每个事件旁边都有一列与这些国家/地区值匹配。
您能对结果进行排序,使其符合此顺序吗?

gfttwv5a

gfttwv5a1#

正如user1844933注解掉的那样,要在MySQL中实现自定义排序顺序,需要使用ORDER BY FIELD()。
因此,您的结果查询如下所示:

SELECT id, country_name
FROM events
WHERE country_name IN ('Spain', 'Portugal', 'France', 'Italy', 'UK', 'Germany')
ORDER BY FIELD(country_name, 'Spain', 'Portugal', 'France', 'Italy', 'UK', 'Germany')

相关问题