我有一个用户表与距离(浮动)和最后在线(日期)。
我想通过两者的混合来排序用户,给在线日期更多的权重,这样结果将显示用户最近在线,然后最近的位置(最小的距离)。
SQL有可能做到这一点吗? 还是需要弹性搜索之类的东西?
谢谢
在MySQL中,您可以构造一个度量。 像这样的东西:
select t.*
from t
order by 1.0 * abs(distance - @location) + 1.0 * datediff(curdate(), last_online) asc
limit 1
1.0
是任意参数,您可以为加权目的设置这些参数。
您可以按order BY指定多个列。 如果我对你的问题理解正确的话。
SELECT
contactLastname,
contactFirstname
FROM
customers
ORDER BY
contactLastname DESC,
contactFirstname ASC;
这样的东西会对你有帮助的
欲了解更多信息,请访问:https://www.mysqltutorial.org/mysql-order-by/