mysql - 如何在 MySQL 中查找和插入丢失的数据而不创建重复数据
问题描述
我有一个问题,我有一个包含几个每日指标的表格,我每天都会在其中发布有关它们的信息,但是本月出现错误,这些指标中缺少某些日期,随机如下图所示:
select distinct fk_indicador_id, datareferencia, dataindicador FROM appweb_ind_exeindicadores where datareferencia = "2021-09-01" and fk_indicador_id = "61";
61 2021-09-01 2021-09-01
61 2021-09-01 2021-09-02
61 2021-09-01 2021-09-03
61 2021-09-01 2021-09-04
61 2021-09-01 2021-09-05
61 2021-09-01 2021-09-06
61 2021-09-01 2021-09-07
61 2021-09-01 2021-09-08
61 2021-09-01 2021-09-09
61 2021-09-01 2021-09-10
61 2021-09-01 2021-09-12
61 2021-09-01 2021-09-13
61 2021-09-01 2021-09-15
61 2021-09-01 2021-09-16
61 2021-09-01 2021-09-17
61 2021-09-01 2021-09-18
61 2021-09-01 2021-09-19
61 2021-09-01 2021-09-20
61 2021-09-01 2021-09-21
61 2021-09-01 2021-09-22
61 2021-09-01 2021-09-23
61 2021-09-01 2021-09-24
61 2021-09-01 2021-09-25
61 2021-09-01 2021-09-26
61 2021-09-01 2021-09-27
61 2021-09-01 2021-09-28
61 2021-09-01 2021-09-29
61 2021-09-01 2021-09-30
如何在不重复的情况下在整个表格中插入缺失的日期?
解决方案
您可以将插入选择与递归查询一起使用。递归查询为您获取所有指标的所有日期。然后插入表中缺少的那些。
insert into appweb_ind_exeindicadores (fk_indicador_id, dataindicador, datareferencia)
with recursive all_dates (fk_indicador_id, dataindicador, max_dataindicador) as
(
select fk_indicador_id, min(dataindicador), max(dataindicador)
from appweb_ind_exeindicadores
group by fk_indicador_id
union all
select fk_indicador_id, dataindicador + interval 1 day, max_dataindicador
from all_dates
where dataindicador < max_dataindicador
)
select
fk_indicador_id,
dataindicador,
dataindicador - interval (day(dataindicador) - 1) day as datareferencia
from all_dates
where (fk_indicador_id, dataindicador) not in
(
select fk_indicador_id, dataindicador from appweb_ind_exeindicadores
);
推荐阅读
- flutter - Flutter将列表数据添加到具有特定名称的另一个列表中
- sql - 统计日期为上个月的记录
- mlt - 熔体复合过渡略微混合
- r - 在预测包上应用 lapply 功能(准确性和 auto.arima)
- flutter - ERROR 错误:未捕获(承诺中):请求包含格式错误或不匹配的凭据 [App ID 与请求的项目不匹配。]
- c++ - 如何在 Cython 中包装 C++ 结构以调用 C++ 构造函数?
- node.js - NodeJS 异步等待函数
- linux - 在 Linux/Windows 之间同步时出现空格问题?
- docker - Hyperledger Indy 数据未安装在 Kubernetes 卷目录中
- java - 两分钟不活动后打开主页