假设我有COUNTRY | POSTAL CODE
列。将会有很多重复项,但是大多数情况下,将在出现COUNTRY
的地方缺少某些POSTAL CODE
值。如何在COUNTRY
匹配的其他行中用COUNTRY
的值填充POSTAL CODE
?
之前
COUNTRY | POSTAL CODE
UK | ABCXYZ
NULL | ABCXYZ
之后
COUNTRY | POSTAL CODE
UK | ABCXYZ
UK | ABCXYZ
答案 0 :(得分:1)
我认为下一个更新就是您所需要的:
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;
答案 1 :(得分:1)
我将使用相关的子查询来做到这一点:
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)
上的索引。我认为这应该是您想要做的最好的性能。