我有两个表,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)
答案 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列是否正确。