[英]mysql update rows of column in second table from column in first table where another column in first table matches column in second table
我的標題可能有些混亂,但這基本上是我想要做的:
我有兩個表:
表1 =網站
Columns: SiteID SiteName Address
1 Germany 123 A Street
2 Poland 234 B Street
3 France 354 F Street
4 England 643 C Street
5 Russia 968 G Street
表2 = Site_New
Columns: SiteID SiteName Address
1 Germany
2 France
3 Russia
我不會用表1中的地址更新表2中的“地址”列,其中表2中的SiteName =表1中的SiteName。如您所見,表1中的站點不在表2中,所以我沒有注意將這些地址復制到表2中。
我正在嘗試此代碼:
update Site_New set Address = (select Site.Address from Site where Site_New.SiteName=Site.SiteName)
但是我得到的錯誤代碼為1242:“子查詢返回的行數超過1。”
關於如何做到這一點的任何想法?
您最好使用update
/ join
語法:
update Site_New sn join
Site s
on sn.SiteName = s.SiteName
set sn.Address = s.Address;
但是,根據您的樣本數據,您的相關子查詢不應導致此類錯誤。
也許join
應該在SiteId
而不是SiteName
:
update Site_New sn join
Site s
on sn.SiteId = s.SiteId
set sn.Address = s.Address;
您需要像這樣對更新進行選擇
UPDATE site_new sn,
( SELECT
sn1.address as _address, sn1.sitename as _sitename
FROM site_new sn1
JOIN site s on s.sitename = sn1.sitename
) t
SET sn.address = t._address
WHERE sn.sitename = t._sitename
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.