栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何获取一个位置周围的郊区列表,然后使用MySql对其他位置重复?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获取一个位置周围的郊区列表,然后使用MySql对其他位置重复?

您只需要执行自联接。 连接表是SQL的一个 非常
基本的部分- 在尝试进一步理解该答案之前,您 确实 应该阅读它。

SELECt   poi.asciiname,         suburb.asciiname,         suburb.country,         DEGREES(ACOS(  SIN(RADIANS(   poi.latitude))* SIN(RADIANS(suburb.latitude))+ COS(RADIANS(   poi.latitude))* COS(RADIANS(suburb.latitude))* COS(RADIANS(poi.longitude - suburb.longitude)))         ) * 60 * 1.852 AS distanceFROM     geoname AS poi    JOIN geoname AS suburbWHERe    poi.asciiname IN ('Tamworth', 'Birmingham', 'Roanoke')     AND poi.population > 0     AND poi.fpre = 'PPL'     AND suburb.fpre IN ('PPLX', 'PPPL')HAVINg   distance <= 60ORDER BY poi.asciiname, distance

在sqlfiddle上看到它。

您会注意到,我已经使用MySQL的

IN()
运算符作为的简写
value = A OR value = B OR ...

您还会注意到,我使用了MySQL

DEGREES()
RADIANS()
函数,而不是尝试显式执行此类转换。

然后,您将纬度分钟数乘以

1.851999999962112
,这是很奇怪的:它非常接近
1.852
,这是海里的精确公里数(历史上定义为纬度分钟),但奇怪的是,我已经假设您打算使用它。

最后,您拥有一个字面值,通过该字面值可以将结果集中的距离过滤为字符串,即

'60'
,而显然这是一个数字值,应不加引号。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421358.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号