【问题标题】:Dynamic scope on related model and then sorting by distance相关模型的动态范围,然后按距离排序
【发布时间】:2020-12-12 07:22:00
【问题描述】:

我有一张表,我在其中保存所有用户的位置日志,我需要从中获取所有用户的最新位置,并按照与提供的几何点的距离对其进行排序。

位置表

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 Spatial 函数来获取距离,但无法使用上面的结果进行排序。 我推荐this 获取最新位置,并推荐this 来自另一个堆栈溢出答案,但很难同时使用两者。

感谢任何帮助,并在此先感谢

【问题讨论】:

  • 所以告诉我们你得到了什么
  • 对不起,我基本上什么都没有。我做了一个范围,但无法弄清楚如何继续使用它pastebin.com/DmQU76ps。谢谢!

标签: mysql sql laravel eloquent spatial-query


【解决方案1】:
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)

【讨论】:

  • 谢谢先生的回答。我需要一些时间自己处理。
猜你喜欢
  • 2015-07-16
  • 2013-03-07
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多