问题描述
有的表每天会记录服务器当天的记录,每天会收集当天记录到大数据仓库当中,作为数据工作者的我们,不仅要保证不漏掉历史记录,而且要避免冗余存储,我们把每天都传过来的日数据表称为A表,存储所有记录的表称为B表。
插入新增或者有变化的sql
insert into table history_table
select A.col1,A.col2,A.col3 .... ,A. colN from
( select col1,col2,col.....
from daily_table) A
left outer join
(select col1,col2,col.....
from history_table ) B
on A.col1=B.col1 and A.col2=B.col2 and ....
where B.col1 is null
对上述sql的解释
只考察部分字段有区别才视为新纪录的话,join 的on 条件里面省去不考察的字段,
where 条件只要任意考察字段为空 就能选出新纪录,因为有一个条件不一样, 右表所有字段都为NULL。
来源:CSDN
作者:dinl_vin
链接:https://blog.csdn.net/dinl_vin/article/details/103480383