Dalam kueri pertama Anda, saya yakin Anda telah membalikkan garis bujur dalam pengurangan. Hukum Kosinus Bulat adalah:
d = acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(long2−long1))*R
Jika lat1 diganti dengan tblcity.latitude, long1 harus diganti dengan tblcity.longitude. Saya pikir Anda secara tidak sengaja mengganti long2 dalam kueri Anda. Apakah yang ini bekerja lebih baik?
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
Saya belum memeriksa kueri kedua Anda, tapi semoga membantu.