我正在尝试使用基于另一个表的信息更新表

时间:2017-03-13 05:06:07

标签: sql postgresql

我有一个表格,其中列出了连接到houseID的SSN(不是真实的)。

我需要根据给定的地址更新特定SSN的houseid。

我有另一张表,其中houseID已连接到HouseAddresses。

这是我到目前为止所做的:

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

虽然这有效,但它不会更新任何内容,我知道它应该更新一行。

恐怕我不知道从哪里开始。

3 个答案:

答案 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;

答案 1 :(得分:0)

如果您想从地址连接的其他表更新您的houseid,您应该按地址连接表

看这个

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

答案 2 :(得分: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子句。