首页 > 解决方案 > MySQL:按多列排序(距离和日期)

问题描述

我有一个距离(浮动)和最后在线(日期)的用户表。

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

这可以用sql吗?还是需要像弹性搜索这样的东西?

谢谢

标签: mysqlsql

解决方案


在 MySQL 中,您可以构造一个度量。像这样的东西:

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

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


推荐阅读