mysql - MySQL:按多列排序(距离和日期)
问题描述
我有一个距离(浮动)和最后在线(日期)的用户表。
我想通过两者的混合对用户进行排序,给予在线日期更多的权重,以便结果将显示用户最近在线,然后最接近位置(最小距离)。
这可以用sql吗?还是需要像弹性搜索这样的东西?
谢谢
解决方案
在 MySQL 中,您可以构造一个度量。像这样的东西:
select t.*
from t
order by 1.0 * abs(distance - @location) + 1.0 * datediff(curdate(), last_online) asc
limit 1
1.0
s 是您可以为加权目的设置的任意参数。
推荐阅读
- c++ - 功能完成后 Push_back 元素消失
- sas - 如何将时间戳中的毫秒设置为 Teradata DB 中的 3 个位置?
- c - 如何比较 2 个忽略变量名称更改的代码?
- graphql - 我们可以将 GraphQL 查询的结果设置为有条件地返回布尔值或自定义对象类型吗?
- r - 如何使用 Bife 从 Latex 的边际效应中导出结果
- c# - xaml 文本框双向绑定不更新代码变量
- java - 我正在尝试在 JPA 实体中设置 BigDecimal Column (quantiteCharge) 的默认值
- twincat - 为什么将事件从 twincat 项目文件移动到未格式化的单独 tmc 文件?
- python - gnupg python解密和加密使用内存而不是磁盘空间
- javascript - 我怎样才能取值在 *ngfor?