Bạn không thể tham chiếu đến bí danh cột trong cùng một SELECT
mệnh đề. Bạn cần chuyển nó vào một truy vấn con. Và bạn không thể tham chiếu đến bí danh trong WHERE
mệnh đề của cùng một SELECT
, bạn cần sử dụng 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
Tôi thực sự khuyên bạn nên sửa thiết kế bảng của mình để đặt vĩ độ và kinh độ vào các cột của riêng chúng, thay vì phải phân chia bằng dấu phẩy mọi lúc.