读书人

update from子句的有关问题

发布时间: 2012-01-13 22:43:29 作者: rapoo

update from子句的问题
update t1
set (Col1) = ( select Col1 from t2
where t1.Col_Primary = t2.Col_Primary );


这样把t1中有的,t2中没有的记录的Col1设成 NULL了?

[解决办法]
SQL> SELECT * FROM T1;

COL1 CNAME
---------- ------------------------------
1 A
2 B
3 C

Executed in 0.157 seconds

SQL> SELECT * FROM T2;

COL1 CNAME
---------- ------------------------------
2 B
3 c
4 d

Executed in 0.14 seconds
SQL> update t1
2 set (CNAME) = ( select CNAME from t2
3 where t1.COL1 = t2.COL1);

3 rows updated

Executed in 0.141 seconds

SQL> SELECT * FROM T1;

COL1 CNAME
---------- ------------------------------
1
2 B
3 c

Executed in 0.156 seconds


SQL> update t1
2 set (CNAME) = ( select CNAME from t2
3 where t2.COL1 = t1.COL1)
4 WHERE
5 EXISTS(
6 SELECT 1 FROM T2 WHERE t1.COL1 = t2.COL1
7 ) ;

2 rows updated

Executed in 0.172 seconds

SQL> SELECT * FROM T1;

COL1 CNAME
---------- ------------------------------
1 A
2 B
3 c

Executed in 0.171 seconds


这样真是很麻烦,期待高人指点


[解决办法]
是要加exists

如果数据量大的话
update很花时间

读书人网 >oracle

热点推荐