MySQL 半径搜索
Posted
技术标签:
【中文标题】MySQL 半径搜索【英文标题】:MySQL radius search 【发布时间】:2015-07-03 19:14:38 【问题描述】:我正在制作一个带有半径搜索的应用程序,这是我从中学到的示例
https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql
就我而言
我愿意
SELECT (3959 * acos(cos(弧度(-37.814107)) * cos(弧度(lat)) * cos(弧度(lng) - 弧度(144.96327999999994)) + sin(弧度(-37.814107)) * sin(弧度(lat)))) AS 距离;
当 lat = -37.8141070000,lng = 144.9632800000
SELECT (3959 * acos(cos(弧度(-37.814107)) * cos(弧度(-37.8141070000)) * cos(弧度(144.9632800000) - 弧度(144.96327999999994)) + sin(弧度(-37.814107)) * sin (弧度(-37.8141070000)))) AS 距离;
mysql 将距离输出为 NULL,为什么?我是不是做错了什么?
我该如何解决?对不起,我真的不擅长数学。
【问题讨论】:
我想我得到了答案,请看***.com/questions/5411836/mysql-bug-trigonometry 【参考方案1】:基本 SQL 查询
SELECT * FROM table
您的查询中必须有一个 MySql 表,其中 lat & lng 作为字段。 即
SELECT (3959 * acos(cos(radians(-37.814107))
* cos(radians(lat)) * cos(radians(lng) - radians(144.96327999999994))
+ sin(radians(-37.814107))
* sin(radians(lat)))) AS distance FROM table;
【讨论】:
嗨大卫,我有一张桌子,有一行 lat = -37.8141070000, lng = 144.9632800000。但是mysql总是将这一行的距离输出为NULL。 但是您必须在查询中有表名。在您的两个查询中都没有数据库 谢谢大卫,我知道这一点。因为我的查询非常复杂,所以我简化了我的问题。以上是关于MySQL 半径搜索的主要内容,如果未能解决你的问题,请参考以下文章