SQL比较两个表并更新其中一个表

时间:2016-06-23 04:51:30

标签: sql-server ssis

我有两个表,A,B。A有两列A1和A2。 B有两列B1和B2。在我的情况下,A2和B2中的某些值是相同的,对于这种情况,我想更新A1 = B1。所以当A2 = B2时,A1应取B1的值。 我编写了以下查询,但它使表A中的所有值为NULL。任何人都可以帮我解决这个问题吗?

Update A
SET A.A1 = (Select B1 from B Where A.A2 = B.B2)

2 个答案:

答案 0 :(得分:7)

您可以使用INNER JOIN来识别应更新哪些记录:

UPDATE A
SET A.A1 = B.B1
FROM A
INNER JOIN B
    ON A.A2 = B.B2

这种方法在逻辑上的好处在于,唯一能够更新的记录是在INNER JOIN之后存活的记录。

答案 1 :(得分:1)

我喜欢Tim Biegeleisen的内部联接方式。但是,我也会先通过发出SELECT来测试它。

select
  a.ai
, b.bi
, a.a2
, b.b2
 from a inner join b
 on a.a2 = b.b2

检查以确保使用新值(col2)更新的值(col1)对于第3列和第4列是否正确。