我要更新表里的一个字段值,比如是表A中的字段S,但是要根据表A中的另一个字段Y的取值情况来判断如何更新S,当Y在表中的取值都一样的时候,就把S更新为空值NULL,当Y在表里的取值超过一种情况的时候,就保持S不变。这个用Update语句应该怎么写? 

解决方案 »

  1.   


    update T set S = case when (select count(distinct Y) from A T1 where T.S = T1.S)>1 then S else null end from A T
      

  2.   

    比如表A为 字段1  字段2  字段S  字段Y 
    F1-1  F1-2  S-1    M 
    F2-1  F2-2  S-2    M 时,把字段S的值全部改为NULL,结果如下: 字段1  字段2  字段S  字段Y 
    F1-1  F1-2  NULL    M 
    F2-1  F2-2  NULL    M 
    当表A为 字段1  字段2  字段S  字段Y 
    F1-1  F1-2  S-1    M1 
    F2-1  F2-2  S-2    M2 时,保持字段S仍为原样,结果如下: 字段1  字段2  字段S  字段Y 
    F1-1  F1-2  S-1    M1 
    F2-1  F2-2  S-2    M2 
      

  3.   

    .....
    update A set S = case when (select count(distinct Y) from A)>1 then S else null end 
      

  4.   

    还是不行,我用的是Access,不支持select count(distinct Y)这样的写法