利用mysql5.6 的st_distance 实现按照距离远近排序。
哈哈
阅读:973
2021-03-31 21:35:13
评论:0
一、用户需求
1、显示我附近的小区。
2、由近到远排序。
3、显示距离
二、数据库表结构数据:
/*
Navicat MySQL Data Transfer
Source Server : rdshme0env6yf2n829ympublic.mysql.rds.aliyuncs.com
Source Server Version : 50629
Source Host : rdshme0env6yf2n829ympublic.mysql.rds.aliyuncs.com:3306
Source Database : wlsq_base
Target Server Type : MYSQL
Target Server Version : 50629
File Encoding : 65001
Date: 2016-12-13 19:12:51
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for lt
-- ----------------------------
DROP TABLE IF EXISTS `lt`;
CREATE TABLE `lt` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(255) DEFAULT NULL COMMENT '名称',
`lng` double(10,3) DEFAULT NULL,
`lat` double(10,3) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of lt
-- ----------------------------
INSERT INTO `lt` VALUES ('2', '宝安区美丽365花园 ', '114.039', '22.669');
INSERT INTO `lt` VALUES ('3', '龙岗区佳兆业上品雅园', '114.089', '22.639');
INSERT INTO `lt` VALUES ('4', '龙岗区万科金色半山', '114.095', '22.634');
INSERT INTO `lt` VALUES ('5', '宝安区金港华庭', '113.868', '22.588');
三、功能实现
我当前所处在的位置(113.858202 , 22.583819 ),需要查询我附近10KM内的小区,并安装由近到远的顺序排列。SELECT
s.id,s.name,s.lng,s.lat,
(st_distance (point (lng, lat),point(113.858202,22.583819) ) / 0.0111) AS distance
FROM
wlsq_base.lt s
HAVING distance<10
ORDER BY distance
效果截图:
温馨提示:st_distance 函数,是mysql5.6版本才提供出来的相关功能函数。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。