如何使用MySQL对比两张表的日期字段查找缺失日期并插入
MySQL实现两表日期比对及缺失日期插入方案
涉及表信息说明
- 表1:
appweb_ind_exeindicadores,存储业务指标数据,对应日期字段为dataindicador - 表2:
calendteste,日期维度表,对应日期字段为dataindicador2
两张表截图如下:

操作步骤
第一步:查询确认缺失的日期
先执行查询语句核对需要插入的缺失日期,避免误操作:
SELECT c.dataindicador2 FROM calendteste c LEFT JOIN appweb_ind_exeindicadores a ON c.dataindicador2 = a.dataindicador WHERE a.dataindicador IS NULL;
查询结果就是calendteste中存在、但appweb_ind_exeindicadores中缺失的日期。
第二步:插入缺失日期到目标表
确认缺失日期无误后执行插入操作,如果appweb_ind_exeindicadores除dataindicador外其他字段都允许为空或有默认值,可直接运行以下语句:
INSERT INTO appweb_ind_exeindicadores (dataindicador) SELECT c.dataindicador2 FROM calendteste c LEFT JOIN appweb_ind_exeindicadores a ON c.dataindicador2 = a.dataindicador WHERE a.dataindicador IS NULL;
注意:如果目标表有其他必填字段,需要在SELECT子句中补充对应字段的取值,例如需要插入固定的业务标识、初始指标值等,可修改为
SELECT c.dataindicador2, '默认值' AS 其他字段名 ...,字段和取值根据实际业务规则调整即可。
内容的提问来源于stack exchange,提问作者GABRIEL MELLO
相关产品推荐
相关产品推荐

