2010-12-03 7 views
1

J'ai la table TB1 qui a les suivantes Col.:Mise à jour requête Oracle

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

table2

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

Comment mettre à jour la date du table2 qui a ID similaire table1.

Merci :)

Répondre

3

En général

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) 

Si vous pouvez être assuré que chaque ID de table2 existe dans le tableau 1 (ou si vous voulez que le date_col à NULL s'il n'y a pas de correspondance), vous pouvez éliminer le WHERE EXISTS. Mais généralement vous ne voulez faire une mise à jour que s'il y a un enregistrement correspondant.

+0

Merci beaucoup, mec :) –

0

Ensuite, une vue en ligne est également utilisée pour la mise à jour. C'est un peu plus difficile à obtenir parce que je pense qu'il faut une clé primaire pour exister des deux côtés de la jointure sinon elle échoue avec une erreur.

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