gpt4 book ai didi

php - MySql + PHP Group by,Having 和 Order By 一起使用返回 - 没有结果

转载 作者:行者123 更新时间:2023-11-30 23:52:29 25 4
gpt4 key购买 nike

我正在尝试进行查询以获得给定坐标的最近(按公里 -> 半径)用户。一切正常,但因为我要保存最后 10 个位置,所以我想在单个查询中获取每个用户的最后一个位置。

   SELECT `id`, `user_id`, (6371 * acos( cos( radians(42.698201) ) * cos( radians(map_lat) ) * 
cos( radians(map_lon) - radians(23.318825)) + sin(radians(42.698201)) *
sin(radians(map_lat)) )) as distance, `map_lat`, `map_lon`, `date_added`
FROM (`map_locations`)
WHERE `user_id` != '3'
HAVING `distance` < 1000
ORDER BY `date_added` desc

这会正确返回具有所需距离的每一行。

现在我想GROUP BY user_id 举个例子,如果有 2 个唯一用户 -> 获取他们最后的位置 按 date_added

我想要的结果示例:

[0] => stdClass Object
(
[id] => 22
[user_id] => 1
[distance] => 1.4498781932309621
[map_lat] => 42.7028
[map_lon] => 23.3022
[date_added] => 2017-09-07 14:45:21
)

[1] => stdClass Object
(
[id] => 21
[user_id] => 2
[distance] => 912.4120338405637
[map_lat] => 43.4124
[map_lon] => 12.1231
[date_added] => 2017-09-07 14:24:59
)

不幸的是,当我添加 Group By 语句时,我得到了 0 个结果,因为每个用户都获得了第一个结果(排序确实不起作用)。

我的研究是,如果 Group Bydate_added 分组结果正常工作,Having 会在它之后正常工作

换句话说:如果每个用户的最后位置符合距离标准,则希望获取所有唯一用户及其最后位置。

最佳答案

你试过这样吗...

SELECT distinct `user_id`, `id`,
(6371 * acos( cos( radians(42.698201) ) * cos( radians(map_lat) ) *
cos( radians(map_lon) - radians(23.318825)) + sin(radians(42.698201)) *
sin(radians(map_lat)) )) as distance, `map_lat`, `map_lon`, `date_added`
FROM (`map_locations`)
WHERE `user_id` != '3'
GROUP BY `user_id`
HAVING `distance` < 1000
ORDER BY `date_added` desc

关于php - MySql + PHP Group by,Having 和 Order By 一起使用返回 - 没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46112637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com