zoukankan      html  css  js  c++  java
  • MySQL计算两坐标距离并排序

    环境

    MySQL5.6

    https://dev.mysql.com/doc/refman/5.6/en/spatial-relation-functions-object-shapes.html#function_st-distance
    

    表结构及数据

    DROP TABLE IF EXISTS `locationpoint`;
    CREATE TABLE `locationpoint`
    (
        `id`        int(11)       NOT NULL AUTO_INCREMENT,
        `province`  varchar(20)   NOT NULL,
        `city`      varchar(20)   NOT NULL,
        `longitude` double(10, 3) NOT NULL,
        `latitude`  double(10, 3) NOT NULL,
        PRIMARY KEY (`id`)
    ) ENGINE = InnoDB
      AUTO_INCREMENT = 1156
      DEFAULT CHARSET = utf8;
    
    INSERT INTO `locationpoint`
    VALUES (1, '山东', '济南', 116.938477, 36.597889),
           (2, '河北', '石家庄', 114.477539, 38.030786),
           (3, '浙江', '杭州', 120.058594, 30.334954),
           (4, '河南', '郑州', 113.629, 34.744),
           (5, '安徽省', '合肥', 117.170, 31.520);
    

    查询方式

    (以内蒙古自治区呼和浩特市为计算中心)

    SELECT id,
           city,
           longitude,
           latitude,
           round(
                       (
                               st_distance(
                                       point(longitude, latitude),
                                       point(111.621094, 40.913513)
                                   ) / 0.0111
                           ) * 1000
               )
               AS distance
    FROM locationpoint
    ORDER BY distance;
    

    查询结果

  • 相关阅读:
    go
    go
    go
    postgresql
    go
    go
    sql
    铂金软件公司
    HRIS 的价值评估
    [转]数据库SQL优化大总结之 百万级数据库优化方案
  • 原文地址:https://www.cnblogs.com/firebet/p/14509878.html
Copyright © 2011-2022 走看看