2017-03-13 56 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条款。

相关问题