快速MySQL查询问题
问题描述:
我有两个表,都有相同的列。我们会打电话给他们在tilistings_temp
,lat
和lng
与谷歌API的地理编码的tilistings
和tilistings_temp
快速MySQL查询问题
两列。 tilistings
有这两列,但它们都是空的。 tilistings
可能包含一些不在tilistings_temp
中的行,反之亦然。
每天晚上,tilistings
从第三方进口的,我不希望有地理编码现有2500个坐标是在tilistings_temp
所以我的问题是如何比较这两个表和:
设定值在tilistings
从tilistings_temp
的相应值lat
和lng
(两个表具有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
);
这导致了MySQL的语法错误 – 2011-02-01 00:53:01