如果Col B匹配的值,则填充Col A的null col A的值



想象我有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)上的索引。我认为这应该对您想做的事情具有最好的表现。

相关内容

  • 没有找到相关文章

最新更新