Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:按多列排序(距离和日期)_Mysql_Sql - Fatal编程技术网

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

MySQL:按多列排序(距离和日期),mysql,sql,Mysql,Sql,我有一个用户表,上面有距离(float)和最后在线时间(date) 我想将这两种方法结合起来对用户进行排序,给在线日期赋予更多的权重,这样结果将显示用户最近在线,然后最接近位置(最小距离) 这在sql中是可能的吗?还是需要弹性搜索 感谢在MySQL中,您可以构造一个度量。大概是这样的: select t.* from t order by 1.0 * abs(distance - @location) + 1.0 * datediff(curdate(), last_online) asc li

我有一个用户表,上面有距离(float)和最后在线时间(date)

我想将这两种方法结合起来对用户进行排序,给在线日期赋予更多的权重,这样结果将显示用户最近在线,然后最接近位置(最小距离)

这在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是可以为加权目的设置的任意参数。

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

SELECT
    contactLastname,
    contactFirstname
FROM
    customers
ORDER BY
    contactLastname DESC,
    contactFirstname ASC;
像那样的东西会对你有帮助


阅读更多信息:

太棒了!这非常有效。谢谢你的帮助。