我想用Table2中的值更新Table1中的列,其中table1中的邮政编码值与table2相匹配。
它必须与多行一起使用,因为某些行具有相同的邮政编码,纬度和经度数据,但门号不同。
我正在使用下面显示的语句。我正在尝试使用来自table2的纬度和经度数据更新table1以匹配邮政编码。
update table1
set latitude = (select latitude from table2 where table1.postcode = table2.postcode);
我收到错误消息:
子查询返回了多个值。
Table1
id Postcode Street City Latitude Longitude
1 N76PP 44 Camden Road London NULL NULL
2 N76PP 45 Camden Road London NULL NULL
3 N76PP 46 Camden Road London NULL NULL
Table2
id Postcode Street City Latitude Longitude
1 N76PP 44 Camden Road London 51.5166 -0.052787
2 N76PP 45 Camden Road London 51.5166 -0.052787
3 N76PP 46 Camden Road London 51.5166 -0.052787
答案 0 :(得分:0)
以下语句在MySQL中工作正常:
update table1 t1
inner join table2 t2 on t1.postcode=t2.postcode
set t1.latitude=t2.latitude, t1.some_other_field = t2.zzz
也可以看看SQL update from one Table to another based on a ID match
ms sql服务器版本:
UPDATE
table1
SET
table1.latitude=table2.latitude
FROM
table2
INNER JOIN
table2
ON
table1.postcode = table2.postcode;
答案 1 :(得分:0)
该子查询将根据您的查询返回多个记录,您正尝试用无法完成的多个记录来更新一列。
在这种情况下,您可以使用JOIN。
update t1 set t1.latitude = t2.latitude
from table1 as t1
inner join table2 as t2 on
t1.postcode = t2.postcode and t1.street = t2.street