Sql 在另一个查询中查询以按经度和纬度查找用户位置

Sql query in another query to find user location by longitude and latitude

我卡在了 "basic" sql 命令上。我在 WP ( usermeta ) 中有一个 table 。在这个 table 中,我有 longitudelatitude 作为 meta_key。我需要的是使用两个不同的查询来获取 user_id.

的列表

我有一个查询,每次调用它时都应该能够找到具有动态距离的用户(那部分“??SOMETHING??”对我来说是未知的)

SELECT *, 
       (3959 * acos(cos(radians('LAT VAL')) * cos(radians(latitude)) 
         * cos( radians(longtitude) - radians('LNG VAL')) + sin(radians('LAT VAL')) 
         * sin(radians(latitude)))) AS distance 
FROM ??SOMETHING?? 
HAVING distance < 15 
ORDER BY distance 
LIMIT 0 , 10

然后我有这个查询(真的有效)

SELECT user_id, 
       MAX(IF(meta_key = 'latitude', meta_value, NULL)) AS latitude,
       MAX(IF(meta_key = 'longitude', meta_value, NULL)) AS longitude 
FROM usermeta 
GROUP BY user_id;

我现在已经做了好几个小时了,我一个人无法弄清楚。我觉得我很接近。

如果有人能帮助我,我将不胜感激。

只需更换 ??something??使用您的查询:

SELECT *, 
       (3959 * acos(cos(radians('LAT VAL')) * cos(radians(latitude)) 
         * cos( radians(longtitude) - radians('LNG VAL')) + sin(radians('LAT VAL')) 
         * sin(radians(latitude)))) AS distance 
FROM 
(
  SELECT user_id, 
       MAX(IF(meta_key = 'latitude', meta_value, NULL)) AS latitude,
       MAX(IF(meta_key = 'longitude', meta_value, NULL)) AS longitude 
  FROM usermeta 
  GROUP BY user_id
) a
HAVING distance < 15 
ORDER BY distance 
LIMIT 0 , 10

请注意,在上面的查询中,'LAT VAL''LNG VAL' 是您要查找用户的点的坐标