update多条记录!
有个表:
id sort value
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
... ...
想把每个id中sort最小的,也就是1,update value = 1,最大的,update value=2,其余的update value = 4,能用一句sql写出来吗?
------解决方案--------------------update test set value=(select decode(test.sort - a.min_s,0,1,decode(test.sort - a.max_s,0,2,4)) from (select id,min(sort) min_s,max(sort) max_s from test group by id) a where a.id=test.id)
------解决方案--------------------create table test(id number,sort number,value number)
insert into test(id,sort) values(1,1);
insert into test(id,sort) values(1,2);
insert into test(id,sort) values(1,3);
insert into test(id,sort) values(2,1);
insert into test(id,sort) values(2,2);
insert into test(id,sort) values(2,3);
insert into test(id,sort) values(2,4);
insert into test(id,sort) values(2,5);
commit;
select * from test
update test a
set value = (select decode(b.sort, c.max, 2, c.min, 1, 4)
from test b,
(select max(sort) max, min(sort) min from test) c
where b.id = a.id
and b.sort = a.sort)