相当于 update 表名 if(state=1){set state=0} else{set state=1} where moduleroleid='1'
要怎么写SQL

解决方案 »

  1.   

    update tablename set state=decode(state, 1, 0, 1) where moduleroleid = '1';
      

  2.   

    哪里出问题了?drop table test;
    create table test (state number, moduleroleid varchar2(20));
    insert into test values (1, '1');
    insert into test values (0, '1');
    insert into test values (null, '1');
    insert into test values (1, '2');select * from test;     STATE MODULEROLEID                  
    ---------- ------------------------------
             1 1                             
             0 1                             
               1                             
             1 2 update test set state=decode(state, 1, 0, 1) where moduleroleid = '1';select * from test;     STATE MODULEROLEID                  
    ---------- ------------------------------
             0 1                             
             1 1                             
             1 1                             
             1 2  -- state为1的变成0了,state不为1的都变成1了
    -- 你要的不是这样么?