2016-10-04 118 views
2

我想根据表B的SQL更新值

我尝试新的值更新“区域”变量的值:

update a set area=(select area from b) 
where a.id=b.id 

表格中的

Id area 
1  N 
2  S 
3  W 
4  W 
5  E 

表乙

Id area 
1  W 
2  E 

回答

3

这应做到:

update a 
    set area = b.area 
from a 
join b 
    on a.id = b.id; 
+0

它给了我在a.area错误:-( – progster

+0

@progster它应该是没有尝试'a.'有人已经编辑我的回答,但现在我已经纠正它。 – GolfWolf

+0

现在错误从“开始”开始。我正在使用proc SQL,也就是SAS里面的SQL,不知道是不是问题 – progster

1

与此

Update a set area= COALESCE((select b.area from b where a.id=b.id),a.area); 
+0

这覆盖了A中的所有内容,我只想更新它在B中的内容。现在我在A中看到B中存在的区域的值,其余为NULL – progster

+0

尝试更新set area = COALESCE((select b.area从b where a.id = b.id),a.area); –

+0

这个作品谢谢,唯一的问题是,在现实生活中,我有几乎100个变量用a.id = b.id这个标准进行更新。可能会更灵活一些吗?我不知道是否有可能通过连接来做到这一点 – progster