快速MySQL查询问题

问题描述:

我有两个表,都有相同的列。我们会打电话给他们在tilistings_templatlng与谷歌API的地理编码的tilistingstilistings_temp快速MySQL查询问题

两列。 tilistings有这两列,但它们都是空的。 tilistings可能包含一些不在tilistings_temp中的行,反之亦然。

每天晚上,tilistings从第三方进口的,我不希望有地理编码现有2500个坐标是在tilistings_temp所以我的问题是如何比较这两个表和:

设定值在tilistingstilistings_temp的相应值latlng(两个表具有mlsid中常见)

它是:

UPDATE tilistings 
SET lat = tilistings_temp.lat, lng = tilistings_temp.lng 
WHERE mlsid = tilistings_temp.mlsid; 

???对不起,如果这是正确的,我不能冒险破坏数据库内的数据。

更新完成可能比较慢连接可能比双重子查询更快,也不会比较难看。

UPDATE tilistings a 
    JOIN tilistings_temp b USING (mlsid) 
SET a.lat = b.lat, a.lng = b.lng; 

update tilistings a 
set (a.lat,a.lng) = (
    select b.lat,b.lng 
    from tilistings_temp b 
    where b.mlsid = a.mlsid 
); 

编辑:只是尝试过了,MySQL不能(没有?)理解像甲骨文复合属性更新,所以就有点难看,当通过MySQL的

update tilistings a 
set a.lat = (
    select b.lat 
    from tilistings_temp b 
    where b.mlsid = a.mlsid 
) , a.lng = (
    select c.lng 
    from tilistings_temp c 
    where c.mlsid = a.mlsid 
); 
+0

这导致了MySQL的语法错误 – 2011-02-01 00:53:01