首页新闻找找看学习计划

求一个sql语句

0
悬赏园豆:10 [已解决问题] 解决于 2014-06-06 11:41

求sql语句:

表table_1中有字段A1,临时表table_2中有字段A2和字段B2,要求: 如果有 table_1中A1的值等于table_2中A2的值,那么就把table_1中A1的值替换为table_2中B2的值。求高手指导,谢谢。

927923690的主页 927923690 | 初学一级 | 园豆:93
提问于:2014-05-30 22:00
< >
分享
最佳答案
0

update tb1 set tb1.a1=tb2.b2

from table_1 tb1 join table_2 tb2

 on tb1.a1=tb2.a2

收获园豆:5
Rookier | 小虾三级 |园豆:652 | 2014-06-03 13:44
其他回答(3)
0

这个好啊  首先目的是要改A1的值  所以应该是 SET A1=B2

 

其次,是A1等于A2 所以是 WHERE A1=A2

 

所以应该是 UPDATE TABLE_1 SET table_1.A1=table_2.B2 WHERE table_1.A1=table_2.A2

KavMors | 园豆:202 (菜鸟二级) | 2014-05-30 22:13

这个试过了 不行d的  table_2.B2和 table_2.A2 处出错‘无法绑定由多个部分组成的标识符...’

支持(0) 反对(0) 927923690 | 园豆:93 (初学一级) | 2014-05-30 22:25

@927923690: 是不是一个A2对应了多个B2,这样赋值的时候就不知道是哪一个B2了

支持(0) 反对(0) ThreeTree | 园豆:1490 (小虾三级) | 2014-05-31 00:34

@ThreeTree: 没,是一一对应的

支持(0) 反对(0) 927923690 | 园豆:93 (初学一级) | 2014-05-31 08:46

@927923690: update table_1 set a.A1=b.B2 from table_1 as a,table_2 as b where a.A1=b.A2

或者

update table_1 set table_1.A1 = (select B2 from table_2 where table_2.A2 = table_1.A1)

参考

http://www.aimks.com/sql-update-the-select-statement-application.html

支持(0) 反对(0) ThreeTree | 园豆:1490 (小虾三级) | 2014-05-31 10:07
0

两种方法,一种是游标,游标循环Table_2,循环体里执行update,这里不详细写了,推荐第二种方法

第二种是产生代码再执行一下

select 'update Table_1 set A1=''' + convert(varchar(50), B2) + ''' where A1=''' + convert(varchar(50), A2) + '''' from Table_2

收获园豆:5
alixingxing | 园豆:133 (初学一级) | 2014-05-31 18:35
0

update table_1 set table_1.A1=a.B2 from table_2  a where table_1.主鍵=a.主鍵 and table_1.A1=a.A2

会飞的金鱼 | 园豆:881 (小虾三级) | 2014-06-05 20:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册