假设现在有一张表A,字段为NO,a、b,里面有2条记录(NO分别为1和2),我现在想只用一句sql实现如下的功能:
把NO为1和2的这2条记录的a字段都更新为“AA”,只更新NO为1的记录的b字段为“BB”,NO2记录的b字段不变。请问可以吗?

解决方案 »

  1.   

    update t set a  = 'AA', b = decode(no,1,'BB',b);
      

  2.   

    update A set A = 'AA',b = decode(no,1,'BB',b);
    commit;
      

  3.   

    SQL> create table ta (no number,a varchar(20),b varchar(20));表已创建。SQL> insert into ta values(1,'gg','mm');已创建 1 行。
    SQL> insert into ta values(2,'dd','mm');已创建 1 行。
    SQL> select * from ta;        NO A                    B
    ---------- -------------------- --------------------
             1 gg                   mm
             2 dd                   mmSQL> update ta set a='AA',b=(decode(ta.no,1,'BB',ta.b));已更新2行。SQL> commit;提交完成。SQL> select * from ta;        NO A                    B
    ---------- -------------------- --------------------
             1 AA                   BB
             2 AA                   mm