2010-12-03 150 views
1

我有具有以下的cols表TB1:更新查询甲骨文

ID  | date 
--------------------- 
1   | 12-JUL-10 
2   | 12-JUL-10 
3   | 12-JUL-10 
4   | 12-JUL-10 
. 
. 
. 
10000  | 12-JUL-10 

表2

ID  | date 
--------------------- 
1   | 12-JAN-09 
2   | 12-JUL-09 
3   | 12-JUL-09 
4   | 12-JUL-08 
. 
. 
. 
5800  | 12-JUL-08 

如何更新具有类似ID为表1的表2的日期。

谢谢:)

回答

3

一般

UPDATE table2 t2 
     SET date_col = (SELECT t1.date_col 
         FROM table1 t1 
         WHERE t1.id = t2.id) 
    WHERE EXISTS (
     SELECT 1 
      FROM table1 t1 
     WHERE t1.id = t2.id) 

如果你能保证,在表2中的每个ID table1中存在(或者,如果你想在date_col上设置为NULL,如果没有匹配),你可以消除WHERE EXISTS。但是,如果有匹配的记录,通常只需要进行更新。

+0

非常感谢你的家伙,工作:) – 2010-12-03 09:07:29

0

然后还有一个内联视图用于更新。这样做有点棘手,因为我认为它需要在连接的两边都存在一个主键,否则会失败并出现错误。

update (
    select 
    t1.id as t1_id, 
    t1.value as t1_date, 
    t2.id as t2_id, 
    t2.value as t2_date 
    from 
    table1 t1 
    join table2 t2 on (t1.id = t2.id) 
) 
set t2_date = t1_date