2010-08-18 5 views
-1

je la déclaration de mise à jour suivante:tsql: quel est le problème avec cette instruction de mise à jour de plusieurs tables?

mise à jour db1.dbo.table1 mis db1.dbo.table1.col = db1_bk.dbo.table1.col où db1.dbo.table1.id = db1_bk.dbo.table1. id

aucune erreur .. il ne mettra pas à jour la ligne du tableau.
cependant si je cours mise à jour db1.dbo.table1 ensemble db1.dbo.table1.col = '2010-01-01' où db1.dbo.table1.id = 2 cela fonctionne.

des idées?

+0

il est sur le même serveur sql – phill

Répondre

3

Vous n'avez pas formé votre requête correctement ...

update db1.dbo.table1 
set db1.dbo.table1.col = db1_bk.dbo.table1.col 
From db1.dbo.table1, db1_bk.dbo.table1 
where db1.dbo.table1.id = db1_bk.dbo.table1.id 

Mais je rejoindrais explicitement ... pas plus efficace, mais plus claire à mon humble avis:

update tbl1 
set tbl1.col = bk.col 
From db1.dbo.table1 tbl1 
inner join db1_bk.dbo.table1 bk 
on tbl1.id = bk.id 
1

vous avez 2 tables répertoriées après la mise à jour, ce que vous ne pouvez pas faire.

La requête est correcte:

update X set x.col = a.col 
from db1.dbo.table1 X 
join db1_bk.dbo.table1 a 
on X.id = a.id 
1
UPDATE db1.dbo.table1 
SET  col = db1_bk.dbo.table1.col 
FROM db1.dbo.table1 
JOIN db1_bk.dbo.table1 
ON  db1_bk.dbo.table1.id = db1.dbo.table1.id 
Questions connexes