首页 > 解决方案 > 使用 sql 查询列出离我最近的联系人

问题描述

我想使用以下 sql 查询对与登录用户关系密切的人员列表进行排序。但我想为查询添加一个约束。如果我想列出 10 公里内的人,我需要做什么。

SELECT *,((((acos(sin((".$latitude."*pi()/180)) * 
sin((`ulat`*pi()/180))+ 
cos((".$latitude."*pi()/180)) * 
cos((`ulat`*pi()/180)) * 
cos(((".$longitude."- `ulong`)*
pi()/180))))*180/pi())*60*1.1515*1.609344)) 
AS `distance` FROM users 
WHERE ulat IS NOT NULL AND 
ulong IS NOT NULL AND 
user_status = '1' AND user_id <> $userid ORDER BY `distance` ASC

标签: phpmysqlsql

解决方案


用于HAVING过滤结果。

SELECT *,((((acos(sin((".$latitude."*pi()/180)) * 
sin((`ulat`*pi()/180))+ 
cos((".$latitude."*pi()/180)) * 
cos((`ulat`*pi()/180)) * 
cos(((".$longitude."- `ulong`)*
pi()/180))))*180/pi())*60*1.1515*1.609344)) 
AS `distance` FROM users 
WHERE ulat IS NOT NULL AND 
ulong IS NOT NULL AND 
user_status = '1' AND user_id <> $userid 
HAVING DISTANCE < 10
ORDER BY `distance` ASC

推荐阅读