Mysql
 sql >> Database >  >> RDS >> Mysql

usa il valore della colonna come nome della colonna mysql

Non puoi fare riferimento a un alias di colonna nello stesso SELECT clausola. Devi spostarlo in una sottoquery. E non puoi fare riferimento a un alias in WHERE clausola dello stesso SELECT , devi usare 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

Ti suggerisco caldamente di correggere il design della tabella per inserire la latitudine e la longitudine nelle proprie colonne, invece di dover dividere su virgola ogni volta.