Select temp.iForver from  (Select TTID,distinct(Ifover) From DetailTable ) temp,
   DetailTable t where t.TTId=temp.TTid 
判断Ifover值是否为I如为1那就可以更新主表如果是0或0,1哪就为0

解决方案 »

  1.   

    update table set ifover=1 where not exists(select * from table a,detailtable b 
    where a.ttid=b.ttid and b.ifover=0)
      

  2.   

    update table a set ifover=(select min(IFOVER) from detailtable b where a.ttid=b.ttid);
      

  3.   

    welyngj(平平淡淡):如果有一个b.ifover=0则所有的都不能更新。beckhambobo(beckham):需要更新三行SQL> select * from test;TTID IF
    ---- --
    1001 0
    1002 0
    1003 0SQL> select * from detailtest;D TTID IF
    - ---- --
    1 1001 0
    2 1001 1
    3 1002 1
    4 1002 1
    5 1003 0SQL> update test a set a.ifover='1' where a.ttid not in
      2  (select distinct(b.ttid) from test a ,detailtest b where a.ttid=b.ttid and b.ifover='0');已更新 1 行。SQL> select * from test;TTID IF
    ---- --
    1001 0
    1002 1
    1003 0
      

  4.   

    哦,beckhambobo(beckham):需要更新三行  是相对于我的实验数据说的,不好意思啊。
      

  5.   

    我执行这样一条语句
    'UPDATE WLSGDDETAIL  SET IFOVER=1 Where exists (select D.NO_WLSGDDETAILID From WLSGDDETAIL D,WLSGD W Where W.IFCG=1 AND D.STRSHOPID='SH0001' AND D.NO_SGDH=W.NO_SGDH) '其中select语句的结果为47,但结果却把表里的记录全部更新了,为什么呀?
    我Select的结果可能是一个集合,又不能用=,该怎么处理呢?请大家帮帮忙啊!
      

  6.   

    补充一点,我目的是要将后面Select语句查找出来的记录的IFOVER字段=1;