首页 > 解决方案 > 如何将唯一键(列中的唯一值与另一列中的值)复制到多次出现的记录中?

问题描述

在此处输入图像描述

所以我有一个名为dragon 的表,有2 列Pokemon 和Power。我的结果表应该看起来像图片中给出的那样。我如何使用 SQL 做到这一点?我感觉可以使用Join。但我正在努力想出正确的思维过程。

标签: sqldatabasevalidationdatabase-design

解决方案


您可以使用窗口函数:

select d.*, max(power) over (partition by pokemon) as imputed_power
from dragon d;

如果您想实际修改数据,那么在标准 SQL 中,您可以使用相关子查询:

update dragon
    set power = (select max(d2.power) from dragon d2 where d2.pokemon = d.pokemon)
    where power is null;

推荐阅读