2013-04-08 8 views
16

Я хотел бы обновить несколько столбцов в таблице на основе значений из второй таблицы, используя Select заявление, чтобы получить значение, как это:SQL Update - Несколько столбцов

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

Однако, это не кажется как будто возможно «установить» более одного имени столбца - существуют ли альтернативы вместо написания отдельных операторов обновления для каждого столбца?

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' 

ответ

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

Это должно работать -

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

обе таблицы не разделяют один и тот же идентификатор, как показано в этом вопросе, так что я могу поставить, где положение для b.id = «someid» и tbl1.id = 'differentid' –

Смежные вопросы