mysql - 有没有办法在按 FIELD 排序时对 MySQL 中的两个行值赋予相等的权重?
问题描述
ORDER BY FIELD(store.location, "MP12221", "MP62112","MP15314") ASC, distance ASC
我有这个查询,它使用 FIELD 对位置进行排序,然后按距离排序,因为无论与用户的距离如何,我都希望这三个是最后一个,但我希望存储 MP12221 和 MP62112 的权重相等。你怎么能那样做?因为据我了解,使用此查询将确保 MP12221 始终在 MP62112 之前。
我需要除三个之外的所有存储按距离排序,然后将 MP12221 和 MP62112 按距离排序,然后将 MP15314 排在最后。
解决方案
通过CASE
表达式排序在这里可能更有意义:
ORDER BY
CASE store.location
WHEN 'MP12221' THEN 1
WHEN 'MP62112' THEN 1
WHEN 'MP15314' THEN 2
ELSE 3 END,
distance
推荐阅读
- php - 使用带参数的 url 从 Json 文件中获取特定数据
- python - Django DB循环模型预防Queryset
- amazon-web-services - AWS:如何检查是否有超过 90 天没有重启的 EC2 实例?
- javascript - 悬停或单击以显示相应的图像
- performance - 为什么 OpenGL ES 纹理查找在不同坐标下变化如此之大(都来自顶点着色器)?
- wordpress - 如何保护我的视频不被 WordPress 模板下载?
- android - 在本机(Android)中安排定期任务的最佳方法是什么?
- javascript - 从 jquery 的自动填充下拉列表中获取值未显示
- python-3.x - Heroku:错误请求浏览器(或代理)发送了此服务器无法理解的请求
- angular - 最新版本的 Angular 中的 [ngClass] 和 [class] 绑定是否完全相同?ngClass 是否提供任何其他优势?