sql - SQL在没有ID的同一张表上选择int更新
问题描述
我有 4 列的表 t1。
A B C D
--------
1 A 1 10
1 A 1 15
1 A 2 12
1 A 3 11
我需要更新,即根据分组的 A、B 和 C 列从 D 列中获取最大值。然后用该最大值更新具有相同 A、B、C 的每一行的 D 列。
因此,对于第一行,D 将更新为 15。对于第三和第四行保持相同的值,因为 A、B 和 C 不一样。
解决方案
使用标准 SQL 执行此操作的规范方法是:
update t
set d = (select max(t2.d) from t t2 where t2.a = t.a and t2.b = t.b and t2.c = t.c);
许多特定数据库支持可能具有更好性能的替代解决方案。
推荐阅读
- rust - 如何限制激活栏,以便我可以使用 exp() 函数进行类型
? - xamarin.forms - 根据设备大小调整框架和控件的大小。建议?
- jsf-2.2 - jsf和战斧dataScroller排序和分页问题
- c++ - 读取 MAC 地址时文件读取异常
- python - 如何在熊猫数据框中仅对正数进行groupby concat总和
- kubernetes - 使用 helm 将 yml 的内容加载为 k8s 中的 configmap
- angular - 在 Angular 中,我需要从我的视图页面中删除项目,而不是从 Firebase 数据库中删除项目。对此有什么建议吗?
- java - 为什么 HashMap 在达到不需要的 TREEIFY_THRESHOLD 值时会调整大小?
- javascript - 如何提高代码的性能?
- javascript - 将用户输入 (ul) 存储在待办事项列表中,以便在重新打开程序时显示该列表