update t_ICItemPlan  set FPutInteger=1 from 
t_ICItemPlan a inner join t_icitem b on a.fitemid=b.fitemid 
where b.fitemid in
(select fitemid from t_icitem where ffullname not like '%水口%' 
and select fitemid from t_ICItemPlan where FIsBackFlush><1)如果是这样写就会一直报错.朋友教我用下面的格式写:
update t_ICItemPlan set FPutInteger=1 
from t_ICItemPlan a inner join t_icitem b on 
a.fitemid=b.fitemid where b.ffullname not like '%水口%' and a.FIsBackFlush<>1
这样写就不会报错.我想请问下,如果按最初的写法,不改格式,能否完善。SQL水平不高,麻烦高手指点。

解决方案 »

  1.   

    update t_ICItemPlan set FPutInteger=1 from  
    t_ICItemPlan a inner join t_icitem b on a.fitemid=b.fitemid  
    where b.fitemid in
    (select fitemid from t_icitem where ffullname not like '%水口%'  
    union
     select fitemid from t_ICItemPlan where FIsBackFlush<>1)
      

  2.   

    update t_ICItemPlan set FPutInteger=1 from  
    t_ICItemPlan a inner join t_icitem b on a.fitemid=b.fitemid  
    where b.fitemid in
    (select fitemid from t_icitem where ffullname not like '%水口%'  
    union 
    select fitemid from t_ICItemPlan where FIsBackFlush><1) a
      

  3.   

    你的sql是从两个表中去同一个字段的值,这个中间连接的不能用and 得用union 
    后面不等于符号错误 应该是<>你朋友的方法是将两表关联,所以取的出该字段的值
      

  4.   

    update t_ICItemPlan set FPutInteger=1 from  
    t_ICItemPlan a inner join t_icitem b on a.fitemid=b.fitemid  
    where b.fitemid in
    (select fitemid from t_icitem where ffullname not like '%水口%'  
    union select fitemid from t_ICItemPlan where FIsBackFlush<>1)