2017-03-13 91 views
0

我有一個表格,裏面有一個SSID列表(不是真正的),它們連接到houseID。我想用另一個表格的信息來更新表格

我需要根據給定的地址更新特定SSN的houseid。

我有另一張房子ID連接到HouseAddresses表。

這是我到目前爲止有:

update persons 
    set houseid = houses.houseid 
from houses 
where houses.houseaddress = 'Alma Street' 
    and persons.SSN = 675849512; 

雖然這個工作,它不更新任何東西,我知道它應該更新一行。

恐怕我不知道該從哪裏出發。

+0

您的查詢沒有任何意義,因爲連接列本身正在更新,而不是用於連接。請顯示樣本數據和您的預期輸出。 –

+0

我確實解決了這個問題,但有一個有點不相關的問題。謝謝您的好意。 –

回答

0

嘗試使用此

update persons 
set persons.houseid = houses.houseid 
from houses 
where houses.houseaddress = 'Alma Street' and 
persons.SSN = 675849512; 

OR

update persons 
set houseid = i.houseid 
from (
    select houseid,houseaddress 
    from houses) i 
where i.houseaddress = 'Alma Street' and 
persons.SSN = 675849512; 
0
如果要更新由地址連接你應該地址連接表等表格你houseid

看這個

update persons 
set houseid = (Select Top(1) houses.houseid from 
       from houses 
       where houses.houseaddress = persons.address 
       ..... 
       ); 
0

試着這樣說:使用JOIN以下列方式有效的解決方案,但在下面的代碼我正在SSN作爲公共列,但你可以用一個,如果不同的替換:

UPDATE p SET houseid = h.houseid 
FROM persons p 
INNER JOIN houses h ON h.SSN = p.SSN 
AND h.houseaddress = 'Alma Street' 
AND ---------- 
-------- 

您可以添加根據您在AND中的要求提供更多條件或在需要時添加WHERE條款。

相關問題