学习oracle的复杂,oracle菜鸟学习之 复杂的更新语句使用

本文通过实例展示了如何在Oracle数据库中使用复杂的更新语句,将表T1中与表T2中c字段相同的记录的a和b字段进行更新。通过创建和填充两个表T1和T2,然后利用子查询和连接操作,实现特定条件下的数据覆盖。更新语句的关键在于正确地使用子查询来匹配和选取要更新的字段值。
摘要由CSDN通过智能技术生成

oracle菜鸟学习之 复杂的更新语句使用

实例与答案

问题:表T1里有a,b,c...N个字段,表T2里有a,b,c三个字段,然后想在T1中"c"与表T2中"c"相同的情况下,从表T2中将a,b覆盖表T1中的a,b,怎么做?

实验表:

create table T1(a int,b int,c int,d int,e int);

create table T2(a int,b int,c int);

insert into T1 values(1,2,3,4,5);

insert into T1 values(10,20,3,4,5);

insert into T1 values(10,20,4,40,50);

insert into T2 values(-1,-1,3);

insert into T2 values(-2,-2,4);

查看表:

SQL> select * from T1;

A B C D E

---------- ---------- ---------- ---------- ----------

1 2 3 4 5

10 20 3 4 5

10 20 4 40 50

SQL> select * from T2;

A B C

---------- ---------- ----------

-1 -1 3

-2 -2 4

SQL>

思路:

更新数据的基本语句

update T1 set a=?,b=? where ?

怎么选出a呢?

SQL> select a.a from T2 a,T1 b where a.c=b.c;

A

----------

-1

-1

-2

SQL>

同样可以选出b

SQL> select a.b from T2 a,T1 b where a.c=b.c;

B

----------

-1

-1

-2

SQL>

where是什么?怎么从集合中取出唯一的值?

SQL> update T1 set a=(select a from T2 where T1.c=T2.c),b=(select b from T2 where T1.c=T2.c) where T1.c in (select c from T2);

3 rows updated.

SQL>

查看结果

SQL> select * from T1;

A B C D E

---------- ---------- ---------- ---------- ----------

-1 -1 3 4 5

-1 -1 3 4 5

-2 -2 4 40 50

SQL>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值