UPDATE语句的有关问题

UPDATE语句的问题
我准备用一个表的字段值更新另一个表的字段值,表结构如下:
表A:
a b c
1 2 3
2 3 3
3 e f
4 s s
表B:
d e  
2 5
3 8
语句如下:
update A set A.c=(select e from B where A.b=B.d)
可是运行结果是:
表A:
a b c
1 2 5
2 3 8
3 e null
4 s null
这是怎么回事?怎么会出现null?

------解决方案--------------------
因为当 3 e f 时 A.b= 'e'
(select e from B where A.b=B.d)
==
(select e from B where 'e'=B.d) 返回的结果是 NULL

改成如下

SQL code
update A 
set A.c=(select e from B where A.b=B.d)
where exists (select e from from B where A.b=B.d)