tsql:这个多表更新语句出了什么问题?

时间:2010-08-18 15:11:04

标签: sql-server tsql

我有以下更新声明:

update db1.dbo.table1 set db1.dbo.table1.col = db1_bk.dbo.table1.col其中db1.dbo.table1.id = db1_bk.dbo.table1.id

没有错误..它只是不会更新表格行 但是,如果我跑 update db1.dbo.table1 set db1.dbo.table1.col ='2010-01-01'其中db1.dbo.table1.id = 2 它确实有效。

任何想法?

3 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分: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