sql - 如何将唯一键(列中的唯一值与另一列中的值)复制到多次出现的记录中?
问题描述
所以我有一个名为dragon 的表,有2 列Pokemon 和Power。我的结果表应该看起来像图片中给出的那样。我如何使用 SQL 做到这一点?我感觉可以使用Join。但我正在努力想出正确的思维过程。
解决方案
您可以使用窗口函数:
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;
推荐阅读
- rdkit - 如何在rdkit中质子化一个分子?
- javascript - 循环遍历 javascript 对象而不基于键进行排序
- java - 如何使用 Java 接口比较器进行通用合并排序?
- kubernetes - Kubernetes 滚动更新:在更新之前尊重 pod 的准备情况
- javascript - 将字符集放在 JavaScript 文件中不起作用
- asp.net-core - 为了响应在没有足够权限的情况下删除资源的请求,在休息 API 中引发的正确异常是什么?
- data-structures - 为什么我需要堆栈和队列?
- azure - 部署 Azure Web 作业
- react-native - “react-native init”模板应用程序的问题:无法从 react-native/scripts 解析模块`./index`
- html - 从jsp调用html文件