簡體   English   中英

mysql從第一個表中的列更新第二個表中列的行,其中第一個表中的另一列與第二個表中的列匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM