数据库中根据经伟度排序查询
来源:互联网 发布:phpstorm mac 激活 编辑:程序博客网 时间:2024/06/08 18:01
代码:
SELECT s.*, COALESCE(ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN(
(
30.671010 * PI() / 180 - a.addressY * PI() / 180
) / 2
),
2
) + COS(30.671010 * PI() / 180) * COS(a.addressY * PI() / 180) * POW(
SIN(
(
104.018484 * PI() / 180 - a.addressX * PI() / 180
) / 2
),
2
)
)
) * 1000
) ,99999999) AS son FROM sys_user s LEFT JOIN sys_useraddress a ON s.userAddressId = a.id ORDER BY son ASC;
sys_user:用户表。
sys_useraddress :经伟度表,与用户有关联
用户自己经伟 度
a.addressY:30.674916
a.addressX:104.027317
连表查询排序order by 经伟度的距离
* 1000 算出来是米,当*1000时转换为千米单位
COALESCE(距离 ,99999999)这是当没获取到用户位置时,获取别个用户的经伟度获取错误里默认的距离,为99999999原因是:连表中获取出来是null这样就排序会在最前面所以得加个99999999这样的话排序就在最后了。
结果出来了表字段也写上:
user表(sys_user)
id ,userName,Password,userAddressId,
address表(sys_useraddress)
id ,addressX,addressY,userId,addressName
将这两张表关联就可以使用上面的sql查询排序了
- 数据库中根据经伟度排序查询
- 根据数据库中时间查询的操作
- 根据需求对数据中查询的数据进行排序
- 根据查询结果插入数据库
- Oracle数据库中分页查询中排序及效率问题
- 数据库分页查询+排序
- 数据库排序查询
- sql查询表中根据某列排序的任意行
- 在linux中使用命令,根据文件名中的关键字查询文件,并按时间排序
- mysql查询根据字符串位置排序问题
- mysql in根据查询id排序
- mysql in根据查询id排序
- 数据库中查询前n项以及排序
- 查询一个数据库中所有表的大小并排序
- 根据表名查询所属数据库
- mysql数据库根据一段时间查询的方法
- 根据数据库字段查询字段所在表
- 根据日期查询数据库中的信息
- 二、大话设计模式 之 策略模式
- 获得页面url的某个url参数的方法
- 一行代码完成js对象数组的深拷贝
- jQuery位置、CSS和尺寸
- 那些年,用swift第三方打包成.framework的问题
- 数据库中根据经伟度排序查询
- pg_rewind
- 【经验】轻量化阅读源码初体验sublime+gradlew命令
- 手动开发动态资源、工具开发动态资源
- mysql中文乱码解决方法
- UNION操作符的用法
- Android应用开发
- Android播放音效
- 14 StringBuffer类与Arrays类*冒泡选择排序*Integer