主要是sql查询符合在圆形,多边形区域经纬度的数据

查询

圆形

中心点 + 距离

drop table if exists demo;
CREATE TABLE `demo` (`id` int(5) NOT NULL AUTO_INCREMENT COMMENT '主键',`shop_name` varchar(50) DEFAULT NULL COMMENT '商品名称',`lng` DECIMAL( 11, 8 ) DEFAULT NULL COMMENT '经度',`lat` DECIMAL( 10, 8 ) DEFAULT NULL COMMENT '纬度',`address` text COMMENT '位置名称',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='demo';INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('4', 'xxx公司', '113.94080600', '22.56090600', '技术大厦');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('5', '科陆电子烟', '113.94154900', '22.56113500', '科陆电子科技大厦');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('6', '酷派信息港', '113.94554300', '22.56051200', '酷派信息港');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('7', '松坪山公园', '113.94728100', '22.55851100', '松坪山公园');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('8', '航天微电机大厦', '113.93847800', '22.56067100', '航天微电机大厦');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('9', '蓝马智造园', '113.93478700', '22.56027400', '蓝马智造园');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('10', '万科智城', '113.94206100', '22.57062800', '万科智城');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('11', '洪浪北', '113.91020200', '22.57442700', '洪浪北');
-- 地球半径:6371
-- distance:距离(公里)
SELECT  *,(  6378.138 * acos (  cos ( radians(21.785367) )  * cos( radians( lat ) )  * cos( radians( lng ) - radians(118.356734) )  + sin ( radians(21.785367) )  * sin( radians( lat ) )  )  ) AS distance  -- 距离
FROM demo
HAVING distance < 463 -- 筛选距离小于463km的(可不写),如果没查到数据就是没有小于463km的
ORDER BY distance -- 根据距离远近来排序 默认升序 (可不写)
LIMIT 0 , 20;  -- 显示前20条数据(可不写)eg:
SELECT  *,(  6378 * acos (  cos ( radians(21.785367) )  * cos( radians( lat ) )  * cos( radians( lng ) - radians(118.356734) )  + sin ( radians(21.785367) )  * sin( radians( lat ) )  )  ) AS distance
FROM demo
HAVING distance < 463
ORDER BY distance
LIMIT 0 , 20;  

结果:

多边形

DROP TABLE IF EXISTS `geom`;
CREATE TABLE `geom`  (`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,`lnglat` varchar(255) NOT NULL COMMENT '经纬度',PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `geom` VALUES (1, "1,1");
INSERT INTO `geom` VALUES (2, "2,2");
INSERT INTO `geom` VALUES (3, "3,3");
INSERT INTO `geom` VALUES (4, "4,4");
INSERT INTO `geom` VALUES (5, "5,5");
INSERT INTO `geom` VALUES (6, "6,6");select`geom`.id, `geom`.lnglat,SUBSTRING_INDEX(`geom`.lnglat,",",1) lng,SUBSTRING_INDEX(`geom`.lnglat,",",-1) lat
from geom
where MBRWithin(ST_GeomFromText(CONCAT( 'POINT(',SUBSTRING_INDEX(`geom`.lnglat,",",1),' ',SUBSTRING_INDEX(`geom`.lnglat,",",-1), ')')),GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'));-----------------------------------------------------------------------------------------下面是简写
pt 代表 POINT(1 1)
select AsText(pt) from geom where MBRWithin(pt,GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'));
select AsText(pt) from geom where MBRContains(GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'),pt);

结果:

主要是sql查询符合在圆形,多边形区域经纬度的数据相关推荐

  1. sql空字符串判断函数_Excel数据还可这样来查询:用SQL查询输出工作表指定区域更高效!...

    对于数据库编程的朋友而言,SQL结构化查询技术并不陌生,也非常好用,凭借SQL强大的功能可以有效实现对数据库的数据表数据的"增.删.改.查"操作.一般而言,比较高级的语言环境,例如 ...

  2. sql查询一段时间(日期)的数据

    最近又开始使用到sql查询,我需要查询一段时间的内容,数据库中的时间数据是这样的: 直接对date字段进行查询一段时间的数据,发现查询 出来的结果不对,后来弄清楚是因为数据存储时是根据字符串的形式存储 ...

  3. Oracle 数据库 - sql语句筛选出符合查询条件的第一条结果实例演示,sql查询结果只显示指定行数的数据方法

    默认看到查询条件有 3 条结果,我想只查询出日期最晚的那一条记录. -- 默认查询条件 select settledate as "日期", syscalculationmny a ...

  4. sql查询出两张表id不同的数据

    一开始我写的sql是 SELECT a.id,a.name from zabbix.zabbix_test a,log.log_test b WHERE a.id!=b.id 然后这样写是可以查询正确 ...

  5. sql查询今年的12个月的统计数据

    1.查出1~12 SELECT @xi:=@xi+1 as id from (SELECT 1 UNION SELECT 2 UNION SELECT 3) xc1, (SELECT 1 UNION ...

  6. oracle查询符合当天并查出每个小时中数据的总数量

    SELECTTO_CHAR (TE.MODDATE, 'hh24') AS TT,COUNT (*) AS TOTAL FROMT_B_EXACTDETECT TE --所需查询数据的表名 WHERE ...

  7. SQL查询入门(上篇)

    SQL语言是一门简单易学却又功能强大的语言,它能让你快速上手并写出比较复杂的查询语句.但对于大多数开发者来说,使用SQL查询数据库并没有一个抽象的过程和一个合理的步骤,这很可能会使在写一些特定的SQL ...

  8. 删除表的sql命令是什么_【技术干货】30个最适合初学者的SQL查询

    毫无疑问,SQL或结构化查询语言是最流行的编程语言之一,尤其是因为它具有访问和修改数据库中数据的功能.SQL与数据库接口的基本用法是其流行的最重要原因. 关于SQL的最基本方面之一就是查询.基本上,S ...

  9. postgre sql 括字段_【技术干货】30个最适合初学者的SQL查询

    毫无疑问,SQL或结构化查询语言是最流行的编程语言之一,尤其是因为它具有访问和修改数据库中数据的功能.SQL与数据库接口的基本用法是其流行的最重要原因. 关于SQL的最基本方面之一就是查询.基本上,S ...

最新文章

  1. 北京大学 微软:预训练模型(Transformer)中的知识神经元
  2. 今日arXiv精选 | 近期必读的5篇Transformers相关论文
  3. Eclipse Alt+/ Content Assistant
  4. PCB布局,布线技巧总结
  5. C++ primer 第11章 关联容器
  6. python中update什么意思_如何在Python中更新字典中键的值?
  7. Hadoop入门基础教程 Hadoop之服务器基础环境搭建
  8. 为信息产业自主化而奋斗,第一本龙芯平台的Linux内核书来了!
  9. 网络协议:TCP/IP协议,你看懂了吗?
  10. java比身高怎么做_D3 Y比例,y对比身高?
  11. java池模式_JAVA模式 对象池 简要代码示例
  12. Java实现下载图片
  13. 硬知识来袭,一文读懂Wi-SUN的前世今生
  14. javascript根据单元格内容动态合并相同内容单元格
  15. 电商销量预测方法综述
  16. 吊打tomcat的高性能web服务器undertow
  17. 从git上克隆的vue项目在本地运行步骤
  18. 计网读书笔记day1
  19. CENTOS上的网络安全工具(七)MYSQL也不能少
  20. 关于手机和固话号码正则表达式

热门文章

  1. 亚马逊后台网页提示HTTP Status 400 – Bad Request无法登陆的解决办法
  2. 基于JAVA搬家预约系统计算机毕业设计源码+系统+lw文档+部署
  3. 游戏美术职业解读:原画,3D建模,3D动作,次世代
  4. error LNK2001: 无法解析的外部符号 解决方法
  5. 特朗普纽约投资项目售价8.5亿
  6. Kafka Producer对连接的管理
  7. TA游戏推荐:暗黑神作 《万神之怒EX》
  8. iOS开发之沙盒机制(SandBox)
  9. SQL语句优化(雷人代码)
  10. 20年9月wust招新赛writeup