Trong truy vấn đầu tiên của bạn, tôi tin rằng bạn đã đảo ngược các kinh độ trong phép trừ. Định luật Hình cầu của Cosin là:
d = acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(long2−long1))*R
Nếu lat1 được thay thế bằng tblcity.latitude, thì long1 phải được thay thế bằng tblcity.longitude. Tôi nghĩ rằng bạn đã vô tình thay thế long2 trong truy vấn của mình. Cái này có hoạt động tốt hơn không?
SELECT tblcity.city, tblcity.latitude, tblcity.longitude,
truncate((degrees(acos( sin(radians(tblcity.latitude))
* sin(radians(45.266708))
+ cos(radians(tblcity.latitude))
* cos(radians(45.266708))
* cos(radians(-73.616257 - tblcity.longitude) ) ) )
* 69.09*1.6),1) as distance
FROM tblcity HAVING distance < 10 ORDER BY distance desc
Tôi chưa xem xét truy vấn thứ hai của bạn, nhưng hy vọng điều đó sẽ hữu ích.