2013-04-08 43 views
16

Tôi muốn cập nhật nhiều cột trong một bảng dựa trên giá trị từ một bảng thứ hai sử dụng một tuyên bố Select để có được những giá trị như thế này:SQL Update - Nhiều Cột

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

Tuy nhiên, nó dường như không như thể có thể 'SET' nhiều hơn một tên cột - có các lựa chọn thay thế thay vì viết các câu lệnh cập nhật riêng cho mỗi cột không?

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' 

Trả lời

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

này nên làm việc -

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

cả hai bảng không chia sẻ cùng một id, như đã thấy trong câu hỏi, vì vậy tôi có thể đặt một mệnh đề where cho b.id = 'someid' và tbl1.id = 'differentid' –

Các vấn đề liên quan