有 2个表 A,B
update A set A.a1 = b2。
在这里 我需要一个子查询。即A表 a1字段 与 B表b1字段关联,要得到 B表的b2字段。where条件 还是a1 和b1关联。
现在update 跟上子查询,怎么看都觉得别扭?
update A set A.a1 = b.b2
(select b2 ,b1 from B where a1= b1) b where a1 = b.b1.(大概意思就是这样的)。
请问大神们,这个update语句究竟该怎么写啊?
------解决思路----------------------
update from
看看
------解决思路----------------------
Update A set A.a1=(select b2 from B where A.a1=B.b1)
不过这个需求有点奇怪,更新了A表中的a1字段,那么这样不就失去和B表的关联吗?
如果更新A表中的其它字段还行,如果更新的是a1感觉怪怪的
------解决思路----------------------
什么场景或者你想实现一个怎样的功能?
------解决思路----------------------
Update A set A.a1=(select b2 from B where A.a1=B.b1)
不过这个需求有点奇怪,更新了A表中的a1字段,那么这样不就失去和B表的关联吗?
如果更新A表中的其它字段还行,如果更新的是a1感觉怪怪的
又学到一种写法,不过有点小问题,当A表中a1在B表中没关联时,会被更新成null,在你的基础上修改了一下加个条件就OK了
update A set a1 = (select b2 from B where B.b1 = A.a1) where A.a1 in (select B.b1 from B )
------解决思路----------------------
update
A
left join
(select b2 ,b1 from B where a1= b1) b
set
A.a1 = b2
where a1 = b.b1
------解决思路----------------------
update
A
left join
(select b2 ,b1 from B where a1= b1) b
on
a.a1=b.b1
set
A.a1 = b2
where
a1 = b.b1
------解决思路----------------------
update
A
left join
(select b2 ,b1 from B where a1= b1) b
on
a.a1=b.b1
set
A.a1 = b2
where
a1 = b.b1
亲,你这种语法是错误的,不过受你的影响 想到一种新的写法
update A set a1 = B.b2 from A inner join B on A.a1=B.b1
第一天逛论坛学到不少东西