2010-08-18 78 views
-1

我有以下更新聲明:tsql:這個多表更新語句有什麼問題?

更新db1.dbo.table1 set db1.dbo.table1.col = db1_bk.dbo.table1.col其中db1.dbo.table1.id = db1_bk.dbo.table1。編號爲

沒有錯誤..它只是不會更新錶行。
但是,如果我運行 更新db1.dbo.table1設置db1.dbo.table1.col ='2010-01-01'其中db1.dbo.table1.id = 2 它確實工作。

有什麼想法?

+0

是相同的SQL服務器上 – phill 2010-08-18 15:18:20

回答

3

您還沒有形成查詢正確...

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 

但我會加入明確...沒有更有效,但恕我直言更清晰:

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

你有2個表在更新後列出,你不能這樣做。

正確的查詢是:

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