我有两张桌子:
-cities(id,name,city_latitude,city_longitude,station_id)
-stations(id,name,station_latitude,station_longitude)
我想更新cities.station_id,其中id为最近的车站,限制在30公里范围内
目前我只能做到这一点:
wait : function() {
var args = Ext.Array.slice(arguments),
action = args.pop(),
store = Ext.getStore('NavigationTree');
if (store.loading) {
store.on('load', action.resume, action);
} else {
action.resume();
}
}
此查询使用位于小于30km的随机Stations.id更新cities.station_id。 但我真的想要最近的,不超过30公里 我尝试了没有成功“GROUP BY”,“LIMIT”或“MIN”,但我有语法错误。 提前谢谢。
答案 0 :(得分:1)
也许尝试这样的事情。
JOIN
在子订阅中将WHERE
命名为ASC
和LIMIT
1。
UPDATE cities c
JOIN (
SELECT id
FROM station s
ORDER BY (((acos(sin((S.station_latitude*pi()/180)) * sin((c.city_latitude*pi()/180)) + cos((S.station_latitude *pi()/180)) * cos((c.city_latitude*pi()/180)) * cos(((S.station_longitude - c.city_longitude)*pi()/180))))*180/pi())*60*1.1515*1.609344) ASC
LIMIT 1) s
SET c.station_id=s.id