想象我有COUNTRY | POSTAL CODE
列。会有许多重复项,但大多数情况下,在存在POSTAL CODE
的情况下将缺少某些COUNTRY
值。如何在POSTAL CODE
匹配的其他行中使用COUNTRY
的值填充COUNTRY
?
COUNTRY | POSTAL CODE
UK | ABCXYZ
NULL | ABCXYZ
之后 COUNTRY | POSTAL CODE
UK | ABCXYZ
UK | ABCXYZ
我认为下一个更新是您需要的:
update table a
set country = b.country
FROM (select DISTINCT country, postal_code from table where country is not null) b
where a.postal_code = b.postal_code
and a.country is not null;
我会使用一个相关子查询来做到这一点:
update t
set country = (select t2.country
from t t2
where t2.postal_code = t.postal_code and
t2.country is not null
limit 1
)
where t.country is not null;
这可以利用(postal_code, country)
和(country)
上的索引。我认为这应该对您想做的事情具有最好的表现。