答一网友csdn中一问题:

本文介绍了一种使用SQL来更新表中特定字段的方法,通过连接自身表来实现数据的统一更新,适用于需要根据表内已有数据进行批量更新的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

看看下面的SQL怎么写
进入用户个人空间
加为好友
发送私信
在线聊天
  • a_north_wolf
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
  • 结帖率:

 

发表于:2008-12-18 13:14:18 楼主
有如下表:
time_id  next_time_id  next_money
200801  200805        100
200802 
200803 
200804 
200805  200810        200
200806
200807
现要求写一SQL语句更新上表,期望得到如下结果:
time_id  next_time_id  next_money
200801  200805        100
200802  200805        100
200803  200805        100
200804  200805        100
200805  200810        200
200806  200810        200
200807  200810        200

*/

 

 

--data:
create table sa
(
   s01   nvarchar2(
20)
   ,s02   nvarchar2(
10)
   ,s03  
int
)

insert into sa values('200801','200805',100);
insert into sa values('200802','',0);
insert into sa values('200803','',0);
insert into sa values('200804','',0); 
insert into sa values('200805','200810',200);
insert into sa values('200806','',0);
insert into sa values('200807','',0);
insert into sa values('200810','200812',300);
insert into sa values('200811','',0);
commit;

--sql:
select sa.s01,min(sb.s02),min(sb.s03) from
sa,
(
select s01,s02,s03  from sa
where s02 is not null
   
and s01<s02 ) sb
   
where sa.s01<sb.s02
group by sa.s01

--result:
200801    200805    100
200802    200805    100
200803    200805    100
200804    200805    100
200805    200810    200
200806    200810    200
200807    200810    200
200810    200812    300
200811    200812    300

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值