两个表 一个表是发票信息表 另外一个表是订单物品明细表(一个订单可以对应多张发票) 其中有个字段是发票号exists语句这样 update FPH set State=1 where exists(select * from OrderDetail where OrderNo=**(订单编号))in语句这样 update FPH set State=1 where FPH in(select FPH from OrderDetail where OrderNo=**(订单编号))我觉得这两个语句应该效果是一样 但是用exists会把整个发票信息表都更新掉 用in就只更新跟订单想关联的发票 想了半天没想出答案 求各位高手给小弟解下疑惑
exists更新数据需要传个附加列到子查询里去
看看吧,不过感觉没有解释你的问题
update FPH set State=1 where exists
(select * from OrderDetail where OrderNo=**(订单编号) and OrderDetail.FPH=FPH.FPH)
OrderDetail.FPH=FPH.FPH
exists
(select * from OrderDetail A where OrderNo=**(订单编
号) and id = FPH.id
)
in 子查询:则是外部查询的FPH在字查询中出现的才会被更新掉。
等价语句参照1楼。