Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden Sie den Spaltenwert als Spaltennamen mysql

Sie können nicht auf einen Spaltenalias im selben SELECT verweisen Klausel. Sie müssen es in eine Unterabfrage verschieben. Und Sie können in WHERE nicht auf einen Alias ​​verweisen -Klausel desselben SELECT , müssen Sie HAVING verwenden .

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

Ich empfehle Ihnen dringend, Ihr Tabellendesign so zu korrigieren, dass Breiten- und Längengrad in eigene Spalten geschrieben werden, anstatt jedes Mal durch Kommas getrennt zu werden.