oracle数据库中修改表中某字段的值等于另一个表中字段的值

见图, T1表和T2表
需求: 修改T2表中的C_date字段的值,等于T1表中的EventTime的值, 对应关系是T1.ID = T2.ID
T1表中的ID是PK

1、创建测试表,

create table test_t1(id varchar(30) , EventTime date);

create table test_t2(id varchar(30) , C_date date);

2、插入测试数据

insert into test_t1 values(1,sysdate-1);

insert into test_t1 values(2,sysdate-2);

insert into test_t1 values(3,sysdate-3);

insert into test_t2 values(1,null);

insert into test_t2 values(1,null);

insert into test_t2 values(1,null);

commit;

3、查询T2表中数据,可以发现c_date字段全部为空,select t.*, rowid from test_t2 t;

4、编写sql,修改T2表中的C_date字段的值,等于T1表中的EventTime的值;update test_t2 t2 set t2.c_date = (select eventtime from test_t1 t1 where t1.id = t2.id)

5、再次查询T2表中数据,可以发现c_date字段全部为T1表中对应的数据;select t.*, rowid from test_t2 t;

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-02
UPDATE t2 SET t2.C_date = (select EventTime from t1 where t1.id = t2.id)

直接用

本回答被提问者采纳
第2个回答  2013-12-26
UPDATE t2 SET t2.C_date = (select EventTime from t1 where t1.id = t2.id) where exists(select 1 from t1 where t1.id = t2.id)

注重效率追问

更喜欢您的回答,
抱歉已经给了上面的朋友

相似回答