有些事实表可能包含多个流程的数据(比如累计快照事实表),又或者流程是可以回滚的,那么不可避免要对历史数据进行修改,这边修改的方式为:
1、设置唯一索引,这里是将订单id
2、然后插入新的记录,使用插入更新ON DUPLICATE KEY UPDATE 当触发唯一键的时候就选择更新指定的列。这样就可以保证新的记录能够覆盖旧的数据或者填充其中的一些字段。
insert into tt(
order_no,
date_day,
province_name,
city_name
)
selectorder_no,
date_day,
province_name,
city_name
from t1
ON DUPLICATE KEY UPDATE
date_day = VALUES(date_day),province_name= VALUES(province_name),
city_name= VALUES(city_name);
3、这样的好处是,当需要添加和修改一些字段的时候是非常灵活的,在拉宽,往主表添加维度信息时非常的好用。