-- 创建表结构 数据没有
CREATE TABLE `geo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`address` varchar(255) DEFAULT NULL COMMENT '地址',
`lng` double(10,7) DEFAULT NULL COMMENT '经度',
`lat` double(9,7) DEFAULT NULL COMMENT '纬度',
PRIMARY KEY (`id`),
KEY `lng_lat` (`lng`,`lat`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
查询 35.417889,116.703040 济宁创意大厦 2 千米范围内的数据, 并按距离排序
-- 查询 35.417889,116.703040 济宁创意大厦 2 千米范围内的数据, 并按距离排序
SELECT id, address,
(
6371 * acos(
cos(radians(35.417889))
* cos( radians( lat ) )
* cos(radians( lng ) - radians(116.703040))
+
sin( radians(35.417889) )
* sin( radians( lat ) )
)
)
AS distance
FROM geo
HAVING distance < 2
ORDER BY distance
LIMIT 0, 20
以上语句并未测试大量数据