用一个表的二个字段来修改另一个表的二个字段

u010877481 2013-05-29 11:20:15
比如A表, 五个字段 A1, A2, A3, A4, A5
B表, 四个字段 B1, B2, B3, B4

怎么样写一个SQL语句,当 A3=B3, A4=B4 时 用A1的值去修改B1,同时用A2的值修改B2

...全文
71 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hh7yx 2013-05-30
引用 5 楼 u010877481 的回复:
to hh7yx:你这种写法也有问题,没有加where 条件,会将A表中不符合条件的记录的相应字段改为空 update test_tmp A set (a2, a4 ) = ( select b2, b4 from test_tmp1 B where b1=A.a1 and b3=A.a3 ) where exists ( select 'X' from test_tmp1 B where b1=A.a1 and b3=A.a3 ) 这样写就正确了
回复
软件钢琴师 2013-05-29
引用 1 楼 u010412956 的回复:
UPDATE B SET (B1,B2)=(SELECT A1,A2 FROM A WHERE B.B3=A.A3 AND B.B4=A.A4)
UPDATE B SET (B1,B2)=(SELECT A1,A2 FROM A WHERE B.B3=A.A3 AND B.B4=A.A4) where B.B3=A.A3 AND B.B4=A.A4
回复
更新 或者赋值多字段时 都可以用括号、字段来实现
回复
hh7yx 2013-05-29
UPDATE B SET (B1,B2)=(SELECT A1,A2 FROM A WHERE B.B3=A.A3 AND B.B4=A.A4)
回复
u010877481 2013-05-29
to hh7yx:你这种写法也有问题,没有加where 条件,会将A表中不符合条件的记录的相应字段改为空 update test_tmp A set (a2, a4 ) = ( select b2, b4 from test_tmp1 B where b1=A.a1 and b3=A.a3 ) where exists ( select 'X' from test_tmp1 B where b1=A.a1 and b3=A.a3 ) 这样写就正确了
回复
u010877481 2013-05-29
软件钢琴师:你加了这一行,反而报错了. 报: A.A4 invalid identifier
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-05-29 11:20
社区公告
暂无公告