Sql server tsql:what';这个多表更新语句有什么问题?

Sql server tsql:what';这个多表更新语句有什么问题?,sql-server,tsql,Sql Server,Tsql,我有以下更新声明: 更新db1.dbo.table1 set db1.dbo.table1.col=db1_bk.dbo.table1.col,其中db1.dbo.table1.id=db1_bk.dbo.table1.id 没有错误。。它只是不会更新表行。 但是如果我跑 更新db1.dbo.table1 set db1.dbo.table1.col='2010-01-01',其中db1.dbo.table1.id=2 它确实有效 有什么想法吗?更新后列出了两个表,但您不能这样做 正确的查询是:

我有以下更新声明:

更新db1.dbo.table1 set db1.dbo.table1.col=db1_bk.dbo.table1.col,其中db1.dbo.table1.id=db1_bk.dbo.table1.id

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


有什么想法吗?

更新后列出了两个表,但您不能这样做

正确的查询是:

update X set x.col = a.col
from db1.dbo.table1 X
join db1_bk.dbo.table1 a
on X.id = a.id

您的查询格式不正确

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
但我会明确加入。。。没有更高效,但更清晰的IMHO:

update tbl1
set tbl1.col = bk.col 
From db1.dbo.table1 tbl1
inner join db1_bk.dbo.table1 bk
on tbl1.id = bk.id
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