日期:2014-05-17  浏览次数:20966 次

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

请问可以吗?

------解决方案--------------------
update t set a = 'AA', b = decode(no,1,'BB',b);
------解决方案--------------------
update A set A = 'AA',b = decode(no,1,'BB',b);
commit;
------解决方案--------------------
SQL code
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                   mm

SQL> 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