表1-
col1 | col2 |
---|---|
1 | 443 |
2 | 449 |
3 | 479 |
您需要更新您的update查询-
UPDATE Table2 T2
SET col2 = T1.col2
FROM Table1 t1
WHERE T1.col1 = T2.col1
在您的更新查询中,有两个部分是错误的。第一个是设置表2数据的部分,您使用了Table1_id=t2.col1,但您应该使用t2.col2=t1.col2和其他错误的连接条件。您使用了t1.col2=t2.col2,但应该使用t1.col1=t2.col1
根据以下更新您的查询
Update Table2 T2 SET T2.col2 = T1.col2 FROM
Table1 t1 WHERE T1.col1 = T2.col1
我将添加到现有答案中的唯一一件事是,一般来说,更新可能是昂贵的操作,所以请检查以确保在执行之前需要更新它。
update table1 t1
set col2 = t2.col2
from table2 t2
where
t1.col1 = t2.col1 and
t1.col2 is distinct from t2.col2 -- added this check
由于MVCC,它实际上会创建一个新记录,并在上一个记录所在的地方创建一个死区(直到下一个真空(,因此,如果您所做的只是替换值,那么在许多层面上不更新记录是有意义的。
我意识到在你的例子中,你替换了所有的null,但总的来说,这只是一个很好的做法。