根据经纬度查询附近企业 | SQL

--第一种

SELECT
    ent_id, ent_name, longitude, latitude,
    ROUND(
        6378.138 * 2 * ASIN(
            SQRT(
                POW(
                    SIN(
                        (
                            40.042307 * PI() / 180 - latitude * PI() / 180
                        ) / 2
                    ),
                    2
                ) + COS(40.042307 * PI() / 180) * COS(latitude * PI() / 180) * POW(
                    SIN(
                        (
                            116.317205 * PI() / 180 -   longitude * PI() / 180
                        ) / 2
                    ),
                    2
                )
            )
        ) * 1000
    ) AS juli
FROM
ent
ORDER BY
    juli DESC
limit 0,100;

--第二种

SELECT
    ent_id, ent_name, longitude, latitude
FROM
ent
ORDER BY   POWER(MOD(ABS(longitude-116.317205),360),2) + POWER(ABS(latitude-40.042307),2) DESC
limit 0,100;

--根据右上角经纬度和左下角经纬度查询范围内企业

select ent_id, ent_name, longitude, latitude
      from ent
      where #{topRightLatitude,jdbcType=DECIMAL}>latitude and latitude>#{leftLowerLatitude,jdbcType=DECIMAL}
      and #{topRightLongitude,jdbcType=DECIMAL}>longitude and longitude>#{leftLowerLongitude,jdbcType=DECIMAL}
时间: 2024-10-11 04:20:24

根据经纬度查询附近企业 | SQL的相关文章

根据经纬度查询附近的点

大致思想:根据给定经纬度(lat,lng)求出其左上角(left_top),右上角(right_top),左下角(left_bottom),右下角(right_bottom)的四个位置.所有在这个区域的范围都在该点附近.参照:http://blog.charlee.li/location-search/ package com.show.common.util; public class Location { private double latitude; private double lon

重构之路 组合查询之传递SQL字符串

既然是使用VB.NET语言对机房收费系统进行重构,那么无可避免的要去解决组合查询的问题,在VB版的实现中这是一个难点,不过大家还是依靠自己或者共同的智慧解决了这个看似复杂的问题. 如今编程的语言不同是一方面,更重要的是系统的结构不一样了,采用了三层架构去实现系统,这样一来就要考虑组合查询的在三层结构中的实现方法.当然,组合查询的核心办法是不变的,都是通过将查询的各个条件组装成SQL查询语句的where子句来实现的,问题就是这个where子句的组装在哪里完成? 如果放在U层完成,那么我们向下传递的

JAVA-Unit03: SQL(基础查询) 、 SQL(关联查询)

Unit03: SQL(基础查询) . SQL(关联查询) 列别名 当SELECT子句中查询的列是一个函数 或者表达式时,那么查询出来的结果集 中对应的该字段的名字就是这个函数或者 表达式的名字.为此可以为这一列添加 别名,这样结果集中该字段就使用别名 作为该列的名字. 若希望别名区分大小写或者含有空格,那么 该别名可以使用双引号括起来. SELECT ename,sal*12 "s al" FROM emp AND,OR AND优先级高于OR,可以通过括号 提高优先级. SELECT

参数化查询为什么能够防止SQL注入

很多人都知道SQL注入,也知道SQL参数化查询可以防止SQL注入,可为什么能防止注入却并不是很多人都知道的. 本文主要讲述的是这个问题,也许你在部分文章中看到过这块内容,当然了看看也无妨. 首先:我们要了解SQL收到一个指令后所做的事情: 具体细节可以查看文章:Sql Server 编译.重编译与执行计划重用原理 在这里,我简单的表示为: 收到指令 -> 编译SQL生成执行计划 ->选择执行计划 ->执行执行计划. 具体可能有点不一样,但大致的步骤如上所示. 接着我们来分析为什么拼接SQ

根据经纬度查询当前地点,百度google接口

<?php /** 百度 API   -----根据经纬度查询当前地点  **/      header("Content-Type: text/html; charset=UTF-8");    function getBaiduAPIAddress($lat,$lng){  //纬度,经度        $location = $lat.','.$lng;          $url = 'http://api.map.baidu.com/geocoder/v2/?locat

如何查找MySQL中查询慢的SQL语句

本文导读:如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL .下面介绍MySQL中如何查询慢的SQL语句 一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_

参数化查询为什么能够防止SQL注入 (转)

很多人都知道SQL注入,也知道SQL参数化查询可以防止SQL注入,可为什么能防止注入却并不是很多人都知道的. 本文主要讲述的是这个问题,也许你在部分文章中看到过这块内容,当然了看看也无妨. 首先:我们要了解SQL收到一个指令后所做的事情: 具体细节可以查看文章:Sql Server 编译.重编译与执行计划重用原理 在这里,我简单的表示为: 收到指令 -> 编译SQL生成执行计划 ->选择执行计划 ->执行执行计划. 具体可能有点不一样,但大致的步骤如上所示. 接着我们来分析为什么拼接SQ

08章 分组查询、子查询、原生SQL

一.分组查询 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ② sum() 求和 ③ min() 求最小值 ④ max() 求最大值 ⑤ avg() 求平均值 例子:查询所有员工的平均工号 注:select语句查询出来只有一个值,因此不能用list(),list投影出来的是一个集合.在这里提供uniqueResult()方法 /* * 分组查询 所有员工的

杰奇CMS系统查询重复文章sql语句

朋友的小说站,现在每天采集的文章会有不少重复的文章.于是提出了去重的需求. 这套cms系统的jieqi_article_chapter表的chaptername没有建立索引,第一步我们要建立索引.注意:建立索引有风险,请先做好数据备份. sql如下,使用时自行更换1处的文章id: select distinct(a.chapterid),a.articleid,a.chaptername from `jieqi_article_chapter` as a left join `jieqi_art