相关模型的动态范围,然后按距离排序

Dynamic scope on related model and then sorting by distance

我有一个 table,我在其中保存所有用户的位置日志,我需要从那里获取所有用户的最新位置,并根据与提供的几何点的距离对其进行排序。

地点table

id user_id location time
1 1 POINT timestamp
2 1 POINT timestamp
3 2 POINT timestamp
4 2 POINT timestamp

结果应该是

id user_id location time
2 1 POINT timestamp
4 2 POINT timestamp

然后我需要对距离提供点最近的用户进行排序。我知道如何使用 MySQL 空间函数来获取距离但无法使用上面的结果进行排序。 我参考了另一个堆栈溢出答案 this for getting latest location and ,但很难同时使用这两个答案。

非常感谢您的帮助并提前致谢

WITH cte AS ( SELECT source_table.*, 
                     ROW_NUMBER() OVER (PARTITION BY source_table.user_id 
                                        ORDER BY source_table.time DESC) rn
              FROM source_table )
SELECT cte.*
FROM cte
WHERE cte.rn = 1 
ORDER BY ST_Distance(cte.location, @specified_point)