tsql: что не так с этим оператором обновления нескольких таблиц? - PullRequest
0 голосов
/ 18 августа 2010

У меня есть следующий оператор обновления:

update 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 это работает.

есть идеи?

Ответы [ 3 ]

3 голосов
/ 18 августа 2010

Вы не правильно сформировали свой запрос ...

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 голос
/ 18 августа 2010
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
1 голос
/ 18 августа 2010

у вас есть 2 таблицы после обновления, что вы не можете сделать.

Правильный запрос:

update X set x.col = a.col
from db1.dbo.table1 X
join db1_bk.dbo.table1 a
on X.id = a.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...