1. 程式人生 > >用一句 Mysql 語句,根據經緯度,計算5公里範圍內的資料

用一句 Mysql 語句,根據經緯度,計算5公里範圍內的資料

經常會有這樣的需求,已知使用者具體的經緯度,要查詢出距離使用者最近 X 公里內的商家

下面給出一條SQL語句來解決這個問題

ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($latitude*PI()/180-latitude*PI()/180)/2),2)+COS($latitude*PI()/180)*COS(latitude*PI()/180)*POW(SIN(($longitude*PI()/180-longitude*PI()/180)/2),2)))*1000)

說明:6378.138這個是地球的直徑,單位千米.$latitude 是使用者位置的緯度,$longitude是使用者位置經度.latitude 為商戶的緯度欄位,longitude為商戶的經度欄位。上面一段sql計算得出根據使用者經緯度計算與商戶的距離。

完整查詢語句如下

select ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($latitude*PI()/180-latitude*PI()/180)/2),2)+COS($latitude*PI()/180)*COS(latitude*PI()/180)*POW(SIN(($longitude*PI()/180-longitude*PI()/180)/2),2)))*1000) AS distance FROM shop having distance <= 5000 order by distance asc

相關推薦

Mysql 語句根據經緯度計算5公里範圍資料

經常會有這樣的需求,已知使用者具體的經緯度,要查詢出距離使用者最近 X 公里內的商家下面給出一條SQL語句來解決這個問題ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($latitude*PI()/180-latitude*PI()/180)/2),2)

sql語句更新兩個表並可更新對應的欄位的值

ACCESS 例子: insert into products (ProNumber,CASNumber,Cnname,Price,Enname,Baozhuang,Pinpai) select ProNumber,CASNumber,Cnname,Price,Enname,Baozhuan

資料庫表3個欄位姓名薪水部門條sql語句求每個部門薪水最高的人姓名

select t1.姓名 from 表 t1, (select max(薪水) 薪水,部門 from 表 group by 部門) t2 where t1.部門=t2.部門 and t1.薪水 = t2.薪水 create table t1 (   NAME VARCH

條SQL語句查出每門課都大於80分的學生的姓名

src exist spa weight utf8 exists null ont http 用一條SQL語句查出每門課都大於80分的學生的姓名,數據表結構如下: 建表SQL如下: SET FOREIGN_KEY_CHECKS=0; -- --------------

地裏位置距離排序根據經緯度

根據 位置 經緯度 pow 4.0 div round bsp sqrt ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((30.572269 * PI() / 180 - qw_ca_lat * PI() / 180) / 2),2) + C

mysql主從數據庫從庫宕機後無法啟動的解決方案

mysql starting 啟動時報錯信息: Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/qkzhi-appzookeeper-1.novalocal.pid

mysql無緣無故的掛掉使用innodb_force_recovery修復

一次mysql無緣無故的掛掉 最近遇到了一個比較奇怪的問題,在大家都在睡午覺的時候,突然手機響了起來,我為了不吵醒其他人拿起了手機看了看監控信息,我去,居然是數據庫down了,這是一臺運行很久的數據庫服務器,當我登進去服務器的時候,嘗試重啟mysql,但是報(Starting MySQL..... ER

求問如何用sql語句來代替asp.net的程序代碼?yrsxn

www. 賭博 是否 努力 語句 眼睛 生活 緣分 想要 、 種菜,選種子很重要。別買了濫情的種子,即使開花很漂亮,卻結了空心的菜,最後一無所有,原因不是好友會偷菜,而是他自己跑了。 8、 如果一場愛情從開始起,就註定是一場賭博,那麽誰認真的想要壓上一切去贏得賭博時,誰就一

根據經緯度座標計算距離sql語句

//根據經緯度計算附近商家距離 /* @param $lng,經度 * @param $lat,緯度 * @param $distance 計算的距離 * @param $sort 根據距離排序 */ function Ne

條sql語句求出不同班級中男生和女生的數量

表: mysql> select * from gg; +------+------+-----+-------+ | id | name | sex | class | +------+------+-----+-------+ | 1 | 張三 | 男 | 1

百度地圖api定位根據經緯度顯示當前城市名

當前城市:<span id="pro_num">鄭州</span> <div id="allmap"></div> <script type="text/javascript" src="http://api.map.baidu.com/

分鐘理解console的這個原理多留幾根黑髮~

引言 問題: console打印出的值與實際值不符的原因。 碰到這個問題是因為更改某一個值a後將其儲存起來,更改為a1後,然而打印出來的值卻是a1,展開列印的值是a。因為不理解這個現象,導致除錯程式碼走了很多彎路,最後才定位到問題。 先來看現象 原因 程式碼 let a = {

MySQLMySQL中的隔離級別事務詳解

MySQL的基礎語法,增刪改查就不多贅述了,我打算直接從事務開始,以後如果寫到了,再補充相關的知識。 參考文章: https://www.cnblogs.com/songjy2116/p/7881294.html https://blog.csdn.net/alexdamiao/arti

成績排序 維陣列儲存學號和成績然後按成績排序輸出

/* 題目1196:成績排序 題目描述: 用一維陣列儲存學號和成績,然後,按成績排序輸出。 輸入: 輸入第一行包括一個整數N(1<=N<=100),代表學生的個數。 接下來的N行每行包括兩個整數p和q,分別代表每個學生的學號和成績。 輸出: 按照學生的成績從小到

條insert語句來插入多行資料

MySQL資料庫: INSERT INTO STUDENT (SNAME, SSEX, SAGE, SDEPT) SELECT '武耀旭','男',24,'CS' UNION SELECT '張志鵬','男',24,'CS' UNION SELECT '朱文輝','男',2

不寫mysql操作資料庫才是Python的風格!!3個ORM模型庫示範

用Python可以不用記住任何一句mysql,通過Python使用的ORM模型,簡單來說就是一個庫是一個物件,這個庫裡面的欄位是這個物件的屬性。 ORM解釋:物件關係對映(英語:(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一

SQL查詢相對複雜的統計報表

--統計從2017年3月份開始每個月金融服務支付前分期申請數以及通過(核賬完成)數 SELECT cast(datepart(year,DATEADD(DAY,-10,ApplyTime)) as varchar)+'年'+cast(datepart(month,DATEADD(DAY,-10,Appl

Update Select 巢狀更新或批量更新SQL語句搞定

有兩個表:SPEC1、tmpDOTSPEC1種一列為:HIGHtmpDOT共有兩個:OLD、NEW兩個表的內容大概如下:SPEC1:... HIGH ...... A    ...... B    ...... A    ...... C    ...... B    ..

百度地圖API根據經緯度實現車輛移動軌跡繪製

百度地圖,實現車輛軌跡繪製 實現思路: 1.根據經緯度實現車輛軌跡繪製 2.使用百度地圖API的兩個覆蓋物實現,Polyline(折線)繪製軌跡,Marker(圖示)繪製小車圖示 3.將每兩個座標間連線起來,形成連貫的軌跡線路 4.生成下一個圖示後刪除上一個繪製的圖示,形成

條SQL語句 查詢出每門課都大於80分的學生姓名

用一條SQL語句 查詢出每門課都大於80分的學生姓名 name   kecheng   fenshu  張三     語文            81 張三     數學            75 李四     語文            76 李四     數