Je change la formule de distance en quelque chose qui fonctionne depuis mysql 5.7. Vous n'avez pas_ spécifié votre base de données ou présenté un exemple de violon pour montrer votre système, j'ai donc sélectionné 5.7 comme minimum9mum et cela fonctionne aussi en 8.0 comme vous le voyez dans le violon.
la requête interne a besoin de deux choses l'identifiant de l'utilisateur qui recherche et sa position, car il est exclu des résultats et bien sûr pour calculer la distance.
Le résultat de la requête est vérifié dans la clause where - j'espère que j'ai eu la bonne idée, vous devriez donc vérifier cela
db<>violon ici