2016-06-03 3 views
1

Мне нужно обновить одну таблицу из другой таблицы. Мне нужно обновить все столбцы в зависимости от определенных номеров идентификаторов, например id = 5 и id = 10. Я попыталсяОбновить все столбцы из другой таблицы в зависимости от id

update Somedatabase.dbo.CONTHIST 
set Somedatabase.dbo.CONTHIST.id = p.id 
from SomedatabaseTest.dbo.CONTHIST p 
where Somedatabase.dbo.CONTHIST.id= 17448 
and p.id = 17448 

Таким образом, вы можете видеть, что я пытаюсь обновить его из SomedatabaseTest, где у меня есть мои отреставрированные ДАННЫЕ, но даже если я не знаю, как обновить все столбцы и ДАННЫЕ для определенного идентификатора. Я попробовал и внес некоторые изменения, но я забыл упомянуть, что кроме id У меня есть cnkey для каждой записи, и один пользователь может иметь пару записей и автоматически имеет пару разных cnkey-s. Так ты можешь снова помочь мне? Я с нетерпением жду вашей помощи! : D

+0

Почему вы устанавливаете Somedatabase.dbo.CONTHIST.id с p.PVKEY? – vercelli

+0

Я ошибся, это id, а не pvkey –

+0

Но если оба идентификатора 17448, то вы ничего не обновляете. – vercelli

ответ

0
UPDATE Somedatabase.dbo.CONTHIST 
    SET ID = A.ID, 
     ,COLUMN1 = A.COLUMN1 
     ,COLUMN2 = A.COLUMN2 
FROM SomedatabaseTest.dbo.CONTHIST P, TABLE2 A 
    WHERE P.id = A.id 
    AND p.id = '17448' 

TABLE2 где данные будут приходить из

0

Во-первых сделать отношения между двумя таблицами, а затем обновить столбцы, как вы хотите.

update Somedatabase.dbo.CONTHIST 
set Somedatabase.dbo.CONTHIST.id = p.id 
[add as many columns as you need to update here] 
from Somedatabase.dbo.CONTHIST inner join SomedatabaseTest.dbo.CONTHIST p 
on Somedatabase.dbo.CONTHIST.id = p.id 
where Somedatabase.dbo.CONTHIST.id= 17448 
and p.id = 17448 and p.cnkey = [something]; 
+0

Я попробовал и получил некоторые изменения, но я забыл упомянуть, что помимо id у меня есть cnkey для каждой записи, и один пользователь может иметь пару записей и автоматически имеет пару различных cnkey-s. Так ты можешь снова помочь мне? : D –

+0

Добавьте cnkey = somethimg в where where. –

+1

Большое спасибо за ваше решение и отличную помощь. Я, наконец, сделал это, теперь все так, как должно быть! ;) –

0

Если я правильно понимаю, что вам нужно:

UPDATE Somedatabase.dbo.CONTHIST 
SET a.id = p.id, 
    a.column1 = p.column1, 
    a.column2 = p.column2, 
    ... 
FROM SomedatabaseTest.dbo.CONTHIST p 
INNER JOIN Somedatabase.dbo.CONTHIST a 
ON a.id = p.id 
WHERE a.id = 17448 
0

Я думаю, что это то, что вы ищете (я бы не обновить идентификатор, так как это PK и значение должно быть то же самое)

update Somedatabase.dbo.CONTHIST 
    set Somedatabase.dbo.CONTHIST.field1 = p.field1, 
     [.....] 
     Somedatabase.dbo.CONTHIST.fieldn = p.fieldn 
from SomedatabaseTest.dbo.CONTHIST p 
where Somedatabase.dbo.CONTHIST.id = p.id 
    and Somedatabase.dbo.CONTHIST.cnKey = p.cnKey 
    and p.id=17448;