如何将所有值从一列更新到另一列



表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,但总的来说,这只是一个很好的做法。

最新更新