update cli_jf set ( cli_ass,cli_bank,cli_count,cli_inv,cli_zip,cli_per,cli_memo,cli_type_n,dis_no,rebate_enable,sex,xl,jf,nl,pr_jf ) = (select cli_ass,cli_bank,cli_count,cli_inv,cli_zip,cli_per,cli_memo,cli_type_n,dis_no,rebate_enable,sex,xl,0,nl,0 from ##temp_jf b where cli_no=cli_jf.cli_no ) where exists (select 1 from b where b.cli_no = cli_jf.cli_no)
服务器: 消息 170,级别 15,状态 1,行 8
第 8 行: '(' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 9
在关键字 'where' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 8
第 8 行: '(' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 9
在关键字 'where' 附近有语法错误。
第 8 行: '(' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 9
在关键字 'where' 附近有语法错误。
set
cli_ass=b.cli_ass,
cli_bank=b.cli_bank,
cli_count=b.cli_count,
cli_inv=b.cli_inv,
cli_zip=b.cli_zip,
cli_per=b.cli_per,
cli_memo=b.cli_memo,
cli_type_n=b.cli_type_n,
dis_no=b.dis_no,
rebate_enable=b.rebate_enable,
sex,xl=b.xl,
jf=0,
nl=b.nl,
pr_jf=0
from cli_jf a
inner join ##temp_jf b
on a.cli_no=b.cli_no
update a
set
cli_ass=b.cli_ass,
cli_bank=b.cli_bank,
cli_count=b.cli_count,
cli_inv=b.cli_inv,
cli_zip=b.cli_zip,
cli_per=b.cli_per,
cli_memo=b.cli_memo,
cli_type_n=b.cli_type_n,
dis_no=b.dis_no,
rebate_enable=b.rebate_enable,
sex,xl=b.xl,
jf=0,
nl=b.nl,
pr_jf=0
from cli_jf a
inner join ##temp_jf b
on a.cli_no=b.cli_no
MSSQL不能按照你那样写的,需要更新的字段必须与新的值字段一一对应
-->不会吧,确认你的数据库是sql server??如果采用ap0405140的办法,如果会不会出现当...时,即使原来有值 也为空吗?
-->只要两个表的cli_no能关联上,就会被更新为##temp_jf表对应字段的值.
set col1 = .. , col2 = .. , col3 = ..
from ..
where ..没有用括号都括起来那种写法,把表的数据看成一个数学集合。
set
cli_ass=b.cli_ass,
cli_bank=b.cli_bank,
cli_count=b.cli_count,
cli_inv=b.cli_inv,
cli_zip=b.cli_zip,
cli_per=b.cli_per,
cli_memo=b.cli_memo,
cli_type_no=b.cli_type_no,
dis_no=b.dis_no,
rebate_enable=b.rebate_enable,
sex=b.sex,
xl=b.xl,
jf=0,
nl=b.nl,
pr_jf=0
from cli_jf a
inner join ##temp_jf b
on a.cli_no=b.cli_no
where exists (select 1 from ##temp_jf where ##temp_jf.cli_no = cli_jf.cli_no)服务器: 消息 4104,级别 16,状态 1
无法绑定由多个部分组成的标识符 "cli_jf.cli_no"。
--> 这句是多余的,请删除.请看2楼代码!