不知道你的更新逻辑,要子查询返回等于一行很容易,下面有四种更新方法:

--> 取最小值更新
update form_all_data set save_data
=(select min(vdata) from form_all_data where form_id in (select form_id from tax_form where form_def_id='14'))--> 取最大值更新
update form_all_data set save_data
=(select max(vdata) from form_all_data where form_id in (select form_id from tax_form where form_def_id='14'))--> 取第一个值更新
update form_all_data set save_data
=(select top 1 vdata from form_all_data where form_id in (select form_id from tax_form where form_def_id='14'))--> 随即取一个值更新
update form_all_data set save_data
=(select top 1 vdata from form_all_data where form_id in (select form_id from tax_form where form_def_id='14') order by newid())

解决方案 »

  1.   

    vdata是类型是clob的,MAX只能针对数字型的吧.
      

  2.   

    update form_all_data set save_data = vdata from form_all_data where form_id in (select form_id from tax_form where form_def_id='14'))
      

  3.   


    update form_all_data set save_data = vdata from form_all_data where form_id in (select form_id from tax_form where form_def_id='14')--orupdate form_all_data set save_data = vdata where form_id in (select form_id from tax_form where form_def_id='14')
      

  4.   

    update FORM_ALL_DATA set save_data=vdata from FORM_ALL_DATA as a inner join TAX_FORM as b on a.FORM_ID=b.FORM_ID where b.FORM_DEF_ID='14'