溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql 搜索附近數(shù)據(jù)實(shí)例解析

發(fā)布時(shí)間:2020-04-28 14:14:08 來源:億速云 閱讀:203 作者:三月 欄目:MySQL數(shù)據(jù)庫

本文主要給大家介紹mysql 搜索附近數(shù)據(jù)實(shí)例解析,希望可以給大家補(bǔ)充和更新些知識,如有其它問題需要了解的可以持續(xù)在億速云行業(yè)資訊里面關(guān)注我的更新文章的。                                                        

1.創(chuàng)建測試表

CREATE TABLE `location` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `longitude` decimal(13,10) NOT NULL, `latitude` decimal(13,10) NOT NULL, PRIMARY KEY (`id`), KEY `long_lat_index` (`longitude`,`latitude`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.插入測試數(shù)據(jù)

mysql 搜索附近數(shù)據(jù)實(shí)例解析

insert into location(name,longitude,latitude) values
('廣州東站',113.332264,23.156206),
('林和西',113.330611,23.147234),
('天平架',113.328095,23.165376);mysql> select * from `location`;
+----+--------------+----------------+---------------+| id | name         | longitude      | latitude      |
+----+--------------+----------------+---------------+|  1 | 廣州東站      | 113.3322640000 | 23.1562060000 |
|  2 | 林和西        | 113.3306110000 | 23.1472340000 ||  3 | 天平架        | 113.3280950000 | 23.1653760000 |
+----+--------------+----------------+---------------+

3.搜尋1公里內(nèi)的數(shù)據(jù)

搜尋點(diǎn)坐標(biāo):時(shí)代廣場 113.323568, 23.146436

6370.996公里為地球的半徑

計(jì)算球面兩點(diǎn)坐標(biāo)距離公式

C = sin(MLatA)sin(MLatB)cos(MLonA-MLonB) + cos(MLatA)cos(MLatB)
 Distance = RArccos(C)*Pi180

根據(jù)計(jì)算公式得到查詢語句如下:

select * from `location` where (
acos(sin(([#latitude#]*3.1415)/180) * sin((latitude*3.1415)/180) + cos(([#latitude#]*3.1415)/180) * cos((latitude*3.1415)/180) * cos(([#longitude#]*3.1415)/180 - (longitude*3.1415)/180))*6370.996)<=1;

執(zhí)行查詢:

mysql> select * from `location` where (    -> acos(    -> sin((23.146436*3.1415)/180) * sin((latitude*3.1415)/180) +     -> cos((23.146436*3.1415)/180) * cos((latitude*3.1415)/180) * cos((113.323568*3.1415)/180 - (longitude*3.1415)/180)    -> )*6370.996    -> )<=1;
+----+-----------+----------------+---------------+| id | name      | longitude      | latitude      |
+----+-----------+----------------+---------------+|  2 | 林和西     | 113.3306110000 | 23.1472340000 |
+----+-----------+----------------+---------------+

本文講解了mysql 搜尋附近N公里內(nèi)數(shù)據(jù)的實(shí)例相關(guān)內(nèi)容,更多相關(guān)知識請關(guān)注億速云。

相關(guān)推薦:
mysql 連接閃斷自動(dòng)重連的方法

php 實(shí)現(xiàn)HTML實(shí)體編號與非ASCII字符串相互轉(zhuǎn)換類

php 根據(jù)自增id創(chuàng)建唯一編號類

以上就是mysql 搜索附近數(shù)據(jù)實(shí)例解析詳細(xì)內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI