首页 > 解决方案 > 有没有办法在按 FIELD 排序时对 MySQL 中的两个行值赋予相等的权重?

问题描述

ORDER BY FIELD(store.location, "MP12221", "MP62112","MP15314") ASC, distance ASC

我有这个查询,它使用 FIELD 对位置进行排序,然后按距离排序,因为无论与用户的距离如何,我都希望这三个是最后一个,但我希望存储 MP12221 和 MP62112 的权重相等。你怎么能那样做?因为据我了解,使用此查询将确保 MP12221 始终在 MP62112 之前。

我需要除三个之外的所有存储按距离排序,然后将 MP12221 和 MP62112 按距离排序,然后将 MP15314 排在最后。

标签: mysql

解决方案


通过CASE表达式排序在这里可能更有意义:

ORDER BY
    CASE store.location
        WHEN 'MP12221' THEN 1
        WHEN 'MP62112' THEN 1
        WHEN 'MP15314' THEN 2
        ELSE 3 END,
    distance

推荐阅读