Mysql UPDATE表与最近的位置

时间:2016-03-31 09:26:03

标签: mysql sql

我有两张桌子:

-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”,但我有语法错误。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

也许尝试这样的事情。

JOIN在子订阅中将WHERE命名为ASCLIMIT 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