求sql语句:
表table_1中有字段A1,临时表table_2中有字段A2和字段B2,要求: 如果有 table_1中A1的值等于table_2中A2的值,那么就把table_1中A1的值替换为table_2中B2的值。求高手指导,谢谢。
update tb1 set tb1.a1=tb2.b2
from table_1 tb1 join table_2 tb2
on tb1.a1=tb2.a2
这个好啊 首先目的是要改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
这个试过了 不行d的 table_2.B2和 table_2.A2 处出错‘无法绑定由多个部分组成的标识符...’
@927923690: 是不是一个A2对应了多个B2,这样赋值的时候就不知道是哪一个B2了
@ThreeTree: 没,是一一对应的
@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
两种方法,一种是游标,游标循环Table_2,循环体里执行update,这里不详细写了,推荐第二种方法
第二种是产生代码再执行一下
select 'update Table_1 set A1=''' + convert(varchar(50), B2) + ''' where A1=''' + convert(varchar(50), A2) + '''' from Table_2
update table_1 set table_1.A1=a.B2 from table_2 a where table_1.主鍵=a.主鍵 and table_1.A1=a.A2