использовать значение столбца как имя столбца mysql

Я пытаюсь получить всех пользователей в радиусе 5 км. вот моя структура таблицы

id| location ------------- 1| 26.851791,75.781810 2| 26.860729,75.7633127 3| 34.057811,-84.239125 

Я пишу запрос для разделения местоположения в соответствии с lat и long

 SELECT SUBSTRING_INDEX( location, ',', 1 ) AS lat, SUBSTRING_INDEX( location, ',', -1 ) AS lng FROM `users_test` LIMIT 0 , 30 

Что хорошо работает, и я получил результаты в следующем

введите описание изображения здесь

то я пишу запрос, чтобы получить всех пользователей, которые находятся в радиусе 5KM согласно следующему блогу.

https://www.marketingtechblog.com/calculate-distance/

 SELECT *,SUBSTRING_INDEX( location, ',', 1 ) AS lat, SUBSTRING_INDEX( location, ',', -1 ) AS lng,(((acos(sin(("26.851791"*pi()/180)) * sin((`lat`*pi()/180))+cos(("26.851791"*pi()/180)) * cos((`lat`*pi()/180)) * cos((("75.781810"- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance FROM `users_test` WHERE distance >= "5" 

но я получаю следующую ошибку.

# 1054 – Неизвестный столбец 'lat' в 'списке полей'

может кто-нибудь сказать мне, где я ошибаюсь.

Вы не можете ссылаться на псевдоним столбца в том же предложении SELECT . Вам нужно переместить его в подзапрос. И вы не можете ссылаться на псевдоним в WHERE того же SELECT , вам нужно использовать HAVING .

 SELECT *, (((acos(sin(("26.851791"*pi()/180)) * sin((`lat`*pi()/180))+cos(("26.851791"*pi()/180)) * cos((`lat`*pi()/180)) * cos((("75.781810"- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance FROM (SELECT *, SUBSTRING_INDEX( location, ',', 1 ) AS lat, SUBSTRING_INDEX( location, ',', -1 ) AS lng FROM users_test) x HAVING distance > 5 

Я настоятельно рекомендую вам исправить ваш дизайн таблицы, чтобы поместить широту и долготу в свои собственные столбцы, вместо того, чтобы каждый раз делиться на запятую.