MySQL:按多列(距离和日期)排序



我有一个用户表,其中包含距离(浮点(和上次在线(日期(。

我想按两者的混合对用户进行排序,赋予在线日期更多的权重,以便结果将显示用户最近在线,然后最接近位置(最小距离(。

这在SQL中可能吗?还是需要弹性搜索之类的东西?

谢谢

在MySQL中,您可以构造一个指标。 像这样:

select t.*
from t
order by 1.0 * abs(distance - @location) + 1.0 * datediff(curdate(), last_online) asc
limit 1

1.0s 是您可以为加权目的设置的任意参数。

您可以按顺序指定多个列。如果我理解你的问题是正确的。

SELECT
contactLastname,
contactFirstname
FROM
customers
ORDER BY
contactLastname DESC,
contactFirstname ASC;

这样的东西会对你有所帮助

阅读更多: https://www.mysqltutorial.org/mysql-order-by/

最新更新