2013-04-08 23 views
16

chciałbym zaktualizować wiele kolumn w tabeli na podstawie wartości z drugiej tabeli przy użyciu Select oświadczenia w celu uzyskania wartości jak poniżej:SQL Update - wiele kolumn

UPDATE tbl1 
SET (col1, col2, col3) = (SELECT colA, colB, colC 
          FROM tbl2 
          WHERE tbl2.id = 'someid') 
WHERE tbl1.id = 'differentid' 

Jednak nie wydaje tak, jakby można było "USTAWIĆ" więcej niż jedną nazwę kolumny - czy istnieją alternatywy zamiast pisania osobnych instrukcji aktualizacji dla każdej kolumny?

UPDATE tbl1 
SET col1 = (SELECT colA FROM tbl2 WHERE tbl2.id = 'someid') 
WHERE tbl1.id = 'differentid' 

UPDATE tbl1 
SET col2 = (SELECT colB FROM tbl2 WHERE tbl2.id = 'someid') 
WHERE tbl1.id = 'differentid' 

UPDATE tbl1 
SET col3 = (SELECT colC FROM tbl2 WHERE tbl2.id = 'someid') 
WHERE tbl1.id = 'differentid' 

Odpowiedz

21
update tbl1 
set col1 = a.col1, col2 = a.col2, col3 = a.col3 
from tbl2 a 
where tbl1.Id = 'someid' 
and a.Id = 'differentid' 
7

to powinno działać -

Update Tbl1 
    SET 
    Col1 = B.ColA, 
    Col2 = B.ColB, 
    Col3 = B.ColC 
    FROM 
    Tbl2 B 
    Where 
    B.Id = 'Someid' 
+0

obie tabele nie podzielają ten sam identyfikator, jak widać w pytaniu, więc mogę umieścić WHERE dla b.id = „someid” i tbl1.id = 'differentid' –