当前位置: 代码迷 >> Java相关 >> 一个update语句解决方案
  详细解决方案

一个update语句解决方案

热度:54   发布时间:2016-04-22 20:56:46.0
一个update语句
有 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感觉怪怪的
------解决思路----------------------
引用:
Quote: 引用:

Update A set A.a1=(select b2 from B where A.a1=B.b1)


不过这个需求有点奇怪,更新了A表中的a1字段,那么这样不就失去和B表的关联吗?
如果更新A表中的其它字段还行,如果更新的是a1感觉怪怪的


就是感觉怪怪 的 
update A set (a.col,b.col) = (select col1,col2 where )这样好像 对应 上就可以实现了。


什么场景或者你想实现一个怎样的功能?
------解决思路----------------------
引用:
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


第一天逛论坛学到不少东西

  相关解决方案