Requête MySQL pour rechercher des emplacements dans un rayon
Les requêtes qui recherchent des emplacements dans un rayon spécifié sont utilisées lors du traitement de données géospatiales. Dans ce cas, une requête est nécessaire pour récupérer toutes les lignes dans un rayon de 25 miles d'une latitude et d'une longitude données. Cependant, la requête d'origine ne renvoyait pas des résultats précis pour toutes les lignes.
Requête améliorée
La requête améliorée élimine les résultats incorrects en utilisant une formule plus précise pour calculer le distance entre les lignes :
SELECT `id`, ( 6371 * acos( cos( radians( :lat ) ) * cos( radians( `lat` ) ) * cos( radians( `long` ) - radians( :long ) ) + sin(radians(:lat)) * sin(radians(`lat`)) ) ) `distance` FROM `location` HAVING `distance` < :distance ORDER BY `distance` LIMIT 25
Explication
Paramètres
Grâce à cette requête améliorée, toutes les lignes dans un rayon spécifié peuvent être récupérées avec précision, éliminant ainsi les résultats incorrects observés dans la requête d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!