培训班上学员的一个SQL问题

本文解决了一个特定的数据库更新问题,涉及到两张表t1和t2的数据匹配及更新操作。更新规则为根据特定条件设置t1表中的z字段值为w字段值的0.13倍。

UT小灵通计费数据库中的一个问题,简化一下可以这样描述:

两个表t1,t2,其结构如下:

SQL> desc t1
Name Null? Type
----------------------------------------- -------- ----------------
X NUMBER(38)
Y VARCHAR2(20)
Z NUMBER(38)
W NUMBER(38)

SQL> desc t2
Name Null? Type
----------------------------------------- -------- ----------------
X NUMBER(38)
B VARCHAR2(13)
C NUMBER(38)

要求更新t1表中的记录,使得z=0.13*w,记录所满足的条件如下:记录的x字段的值在t2表中存在,并且这条记录的y字段的前13个字符等于t2表的相应记录的b字段值。唉,感觉问题描述的很糟糕,怎么表达能力这么差。

答案如下:

SQL> update t1 set z=w*0.13
2 where substr(y,1,13) in (select b from t2 where t2.x=t1.x)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/37724/viewspace-152549/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/37724/viewspace-152549/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值