根据组的结果更新表
我正在尝试解决一个棘手的更新问题。有两个表包含相同的三列以及其他不同的列,如下所示:
Table1 {pers_id, loc_id, pos, ... }
Table2 {pers_id, loc_id, pos, ... }
没有一个字段是唯一的。前两个字段共同将表(或表)中的记录标识为属于同一实体。Table1 可以有 15 条记录属于一个实体,而 table2 可以有 4 条记录属于同一实体。第三列“pos”是从 0 到任何值的索引,这是我要更新的列。
在 Table1 和 Table2 中,pos 列从 0 开始,并根据用户选择递增,因此在示例中(table1 中有 15 条记录,table2 中有 4 条记录),table1 包含 0 - 14 的 'pos' 值,而 Table2包含 0-3 的“pos”值。
我想用 Table2 中类似实体的计数结果来增加 Table1 中的 pos 字段。这是正确给我table2结果的sql语句:
select table2.pers_id, table2.loc_id, count(*) as pos_increment from table2 group by table2.pers_id, table2.loc_id;
在示例中,更新的最终结果(table1 中的 15 条记录和 table2 中的 4 条记录)将是 Table1 中同一实体的所有记录都增加 4(特定实体分组的结果)。0 将更改为 4、15 更改为 19 等。
这可以在一个声明中实现吗?