根据圆周率和地球半径系数以及搜寻点的经纬度,搜寻数据表中与搜寻点之间的距离为N公里内的数据。

1.创建测试表CREATE TABLE `location` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `longitude` decimal(13,10) NOT NULL, `latitude` decimal(13,10) NOT NULL, PRIMARY KEY (`id`), KEY `long_lat_index` (`longitude`,`latitude`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.插入测试数据insert into location(name,longitude,latitude) values

('广州东站',113.332264,23.156206),

('林和西',113.330611,23.147234),

('天平架',113.328095,23.165376);mysql> select * from `location`;

+----+--------------+----------------+---------------+| id | name | longitude | latitude |

+----+--------------+----------------+---------------+| 1 | 广州东站 | 113.3322640000 | 23.1562060000 |

| 2 | 林和西 | 113.3306110000 | 23.1472340000 || 3 | 天平架 | 113.3280950000 | 23.1653760000 |

+----+--------------+----------------+---------------+

3.搜寻1公里内的数据

搜寻点坐标:时代广场 113.323568, 23.146436

6370.996公里为地球的半径

计算球面两点坐标距离公式C = sin(MLatA)sin(MLatB)cos(MLonA-MLonB) + cos(MLatA)cos(MLatB)

Distance = RArccos(C)*Pi180

根据计算公式得到查询语句如下:select * from `location` where (

acos(sin(([#latitude#]*3.1415)/180) * sin((latitude*3.1415)/180) + cos(([#latitude#]*3.1415)/180) * cos((latitude*3.1415)/180) * cos(([#longitude#]*3.1415)/180 - (longitude*3.1415)/180))*6370.996)<=1;

执行查询:mysql> select * from `location` where ( -> acos( -> sin((23.146436*3.1415)/180) * sin((latitude*3.1415)/180) + -> cos((23.146436*3.1415)/180) * cos((latitude*3.1415)/180) * cos((113.323568*3.1415)/180 - (longitude*3.1415)/180) -> )*6370.996 -> )<=1;

+----+-----------+----------------+---------------+| id | name | longitude | latitude |

+----+-----------+----------------+---------------+| 2 | 林和西 | 113.3306110000 | 23.1472340000 |

+----+-----------+----------------+---------------+

本文讲解了mysql 搜寻附近N公里内数据的实例相关内容,更多相关知识请关注Gxl网。

相关推荐:

mysql 连接闪断自动重连的方法

php 实现HTML实体编号与非ASCII字符串相互转换类

php 根据自增id创建唯一编号类

mysql 附近3公里的_mysql搜寻附近N公里内数据的实例相关推荐

  1. mysql倍增表的内容_MySQL入门(7)——表数据的增、删、改

    MySQL入门(7)--表数据的增.删.改 插入数据 使用INSERT···VALUES语句插入数据 INSERT语句最常用的格式是INSERT···VALUES: INSERT [LOW_PRIOR ...

  2. mysql+误操作怎么恢复_MySQL 误操作后如何快速恢复数据

    传统解法 用全量备份重搭实例,再利用增量binlog备份,恢复到误操作之前的状态.然后跳过误操作的SQL,再继续应用binlog.此法费时费力,不值得再推荐. 利用binlog2sql快速闪回 首先, ...

  3. mysql数据库表复制备份_mysql数据库的备份以及表格数据之间的复制

    #####-------------mysql数据备份以及表间数据的复制-------------------##### ##----------------我的mysql学习(二)--------- ...

  4. mysql 载入主体时出错_mysql遇到load data导入文件数据出现1290错误的解决方案

    错误出现情景 在cmd中使用mysql命令,学生信息表添加数据.使用load data方式简单批量导入数据. 准备好文本数据: xueshengxinxi.txt 文件  数据之间以tab键进行分割 ...

  5. mysql查询男生基本情况_MySQL数据库技术与应用:数据查询

    **摘要:**数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求. 数据查询 数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求.数据查询可 ...

  6. mysql load data infile 重写_mysql load data infile 命令的数据导入

    文章介绍了mysql load data infile 命令的数据导入,该方式比直接的insert的效率要高,按照官方的说法是要比insert语句快上20倍,有需要的朋友可参考. 使用方式如下: 代码 ...

  7. mysql主动自增可以_Mysql join联表及id自增实例解析

    join的写法 如果用left join 左边的表一定是驱动表吗?两个表的join包含多个条件的等值匹配,都要写道on还是只把一个写到on,其余写道where部分? createtablea(f1in ...

  8. mysql导入组织树脚本_mysql存储过程递归调用发作树数据

    mysql存储过程递归调用产生树数据 使用finereport的树下拉框时,要求提供有层次结构的数据.例如:一级001,二级001001,三级001001001 等.而我们一般的递归表是这样的,定义一 ...

  9. mysql中如何创建数据库_Mysql 中如何创建数据库和数据表

    这里的数据库为:user  数据表为 aaa mysql –uroot –p                 进入mysql create database user;            创建数据 ...

最新文章

  1. CSS a控制超链接文字样式
  2. Linux下常用日志分析工具
  3. vagrant使用centos的环境安装..
  4. [算法笔记]分块算法从入门到TLE
  5. 宁德时代,想成为“绿巨人”
  6. php框架原理 php初识,初识 PHP 7 源码整体框架
  7. elmentui的短信验证界面_[javascript] elementui下login登录页界面和js验证逻辑
  8. LINQ to SQL语句 收藏系列
  9. python scipy stats学习笔记
  10. Android客户端和服务器端数据交互的第一种方法
  11. 让你的网速快到不可思议
  12. Android数据传输加密(三):RSA加密
  13. 如何将自己开发的网站部署到小鸟云服务器上?
  14. mfc 中文乱码转换为正常中文_中文编码转换
  15. 全球及中国铁矿石行业供求状况与投资决策建议报告2022版
  16. 入门3D游戏建模,是选择角色建模还是场景建模,看完你来选
  17. idea创建SpringBoot工程
  18. 条码打印机打印出白纸怎么回事
  19. unity新粒子系统的碰撞和触发
  20. Android 10.0 Activity启动详解(二)

热门文章

  1. Python:Item Pipeline
  2. java显示当月数据_Java统计当月与往月数据 使用StringTemplate
  3. Bad owner or permissions on xx/.ssh/config
  4. Ubuntu 系统 在终端中过滤log 特殊的信息
  5. java static 作用详解
  6. 出现PNG文件错误的解决方案AAPT err(Facade for 1773557322): libpng error: Not a PNG file
  7. 讯飞语音:客户端未被授权
  8. makefile学习(转载)
  9. kvm虚拟机vnc配置
  10. JS简单实现自定义右键菜单