在MySQL中查找距離是一個(gè)很常見(jiàn)的需求,尤其是在地理位置相關(guān)的應(yīng)用中。因此,MySQL提供了許多函數(shù)用于計(jì)算距離。
SELECT ST_DISTANCE_SPHERE(point1, point2) AS distance FROM table_name;
其中ST_DISTANCE_SPHERE()函數(shù)是計(jì)算兩個(gè)點(diǎn)之間的球面距離,返回的單位是米。在使用該函數(shù)之前,需要保證MySQL版本大于5.7.6,并且MyISAM和InnoDB存儲(chǔ)引擎中已經(jīng)安裝了所需的插件。同時(shí),point1和point2均為POINT類型的列,存儲(chǔ)了經(jīng)緯度信息。
SELECT ST_DISTANCE_SPHERE(POINT(-118.4079, 33.9434), POINT(-74.0059, 40.7128)) AS distance;
該查詢會(huì)返回洛杉磯(經(jīng)度-118.4079,緯度33.9434)和紐約(經(jīng)度-74.0059,緯度40.7128)之間的距離。
SELECT ST_DISTANCE_SPHERE( POINT(longitude1, latitude1), POINT(longitude2, latitude2) ) AS distance FROM table_name WHERE ...
對(duì)于包含多個(gè)坐標(biāo)的表格,可以在WHERE子句中添加篩選條件進(jìn)行過(guò)濾。同時(shí),可以同時(shí)計(jì)算多個(gè)點(diǎn)之間的距離。
除了ST_DISTANCE_SPHERE()函數(shù)外,MySQL還提供了其他計(jì)算距離的函數(shù),如ST_DISTANCE()、ST_DISTANCE_Spheroid()等。這些函數(shù)的具體用法可以查閱MySQL官方文檔。