通过两张表的一个字段对应,update其中一张表的某个字段

update PolityFace  set fdJoinDay =
(SELECT b.fdJoinDay FROM personbaseinfo b WHERE PolityFace.fsPersonID = b.fsPersonID) where  exists
(SELECT 1 FROM personbaseinfo d WHERE PolityFace.fsPersonID = d.fsPersonID)

update PolityFace  set fdJoinDay =
(SELECT b.fdJoinDay FROM personbaseinfo b,PolityFace c WHERE c.fsPersonID = b.fsPersonID) where  exists
(SELECT 1 FROM personbaseinfo d WHERE PolityFace.fsPersonID = d.fsPersonID)

两个sql的目的是一致的,但是逻辑不同。
第一个sql中的SELECT b.fdJoinDay FROM personbaseinfo b WHERE PolityFace.fsPersonID = b.fsPersonID的PolityFace.fsPersonID 是从一开始的PolityFace 中取的值,而第二个sql中的
c.fsPersonID是从两个表交叉集合取出的值,故会报错。

猜你喜欢

转载自kanexiao.iteye.com/blog/1840233