首页 > 解决方案 > 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 不一样。

标签: sqloracle

解决方案


使用标准 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);

许多特定数据库支持可能具有更好性能的替代解决方案。


推荐阅读