我有以下需要合并的表:
表格1:
主键 | sec_key | 旧号码 | 变量1 | 变量2
1 | A | 5 | AA | 11
1 | B | 8 | BB | 22
表2:
主键 | 新号码 | 变量1 | 变量2
1 | 2 | DD | 44
1 | 3 | EE | 55
1 | 7 | FF | 66
我无法修改表(没有插入,因此我不能使用“合并”,只能使用 UNION)。
这两个表都包含大量数据,我需要最有效的方法来合并它们。
- 合并应该根据main_key,对于每个table1.sec_key,
- 如果 table2.new_number < table1.old_number,则将 table1.var1、table1.var2 的值更新为对应的值:table2.var1 和 table2.var2。
此外,应该有一行带有 old_number 的原始 table1 值。
例子:
- 对于第一个 table1.sec_key:它的 old_number 是 5。
- table2.new_number '2' 小于 5,table2.new_number '3' 也小于 5 但 table2.new_number '7' 大于 5
- 所以输出将包括 old_numbers 和 new_number=2 和 new_number=3 的行:
(其余的 sec_key 和其他 main_key 中的所有其他 sec_key 也是如此。
该示例的预期 output_table :
main_key | sec_key | number | var1 | var2
1 | A | 5 | AA | 11
1 | A | 2 | DD | 44
1 | A | 3 | EE | 55
1 | B | 8 | BB | 22
1 | B | 2 | DD | 44
1 | B | 3 | EE | 55
1 | B | 7 | FF | 66
我想过使用 UNION 或加入,但不确定如何执行此操作并为每个 sec_key 保留 table1 中的原始行。
我的问题是 main_key 不是唯一键。我也考虑过使用 CTE,但不确定它在这里是否有用。