如何将 2 个表与日期进行比较并检查缺少哪个日期并使用 Mysql 插入日期?

Posted

技术标签:

【中文标题】如何将 2 个表与日期进行比较并检查缺少哪个日期并使用 Mysql 插入日期?【英文标题】:How to compare 2 tables with dates and check which date is missing and insert the date using Mysql? 【发布时间】:2021-09-21 20:12:47 【问题描述】:

如何比较两个表的日期并检查缺少哪个日期并使用 mysql 插入日期??

表 1:appweb_ind_exeindicadores - 列:dataindicador

表 2:calendteste - 列:dataindicador2

图片:

图片:

【问题讨论】:

使用SELECT 查询从表2 中获取不在表1 中的所有行。然后将其用作INSERT INTO table1 的源数据。 【参考方案1】:

您可以使用类似下面的方法来获取一个表中的日期列表,而不是另一个表中的日期列表,然后围绕它编写一个 INSERT 以将其添加。

-- This will give you the dates in table 1 but not in table 2
SELECT DISTINCT table1.date
FROM table1
WHERE table1.date NOT IN (SELECT DISTINCT table2.date2 FROM table2)

【讨论】:

在表 1 的图像 1 中,我有一些日期没有出现,例如:2021-09-11 和 2021-09-14,我需要输入这些日期以便查询检查和手动插入【参考方案2】:

如果您想要calendteste 中的唯一日期,我建议您让数据库 进行验证。因此,在列上创建一个唯一约束:

alter table calendteste add constraint unq_calendteste_dataindicador2
    unique (dataindicador2);

然后,您可以插入行并使用on duplicate key update 处理重复项:

INSERT INTO calendteste (dataindicador2)
    SELECT distinct dataindicador
    FROM appweb_ind_exeindicadores
    ON DUPLICATE KEY UPDATE dataindicador2 = VALUES(dataindicador2);

实际的逻辑是无操作——没有更新发生但重复键错误被忽略。这是确保列没有重复的安全方法。

【讨论】:

在表 1 的图像 1 中,我有一些日期没有出现,例如:2021-09-11 和 2021-09-14,我需要输入这些日期以便查询检查和手动插入

以上是关于如何将 2 个表与日期进行比较并检查缺少哪个日期并使用 Mysql 插入日期?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Join 表与第一个表中的日期范围和第二个表中的日期

如何在 NSArray 中检查 NSDate yyyy/mm/dd 并进行比较?

如何从 2 个表中选择最近的日期时间

如何基于相同的 ID 比较两个不同数据框中的日期列

防止日期转换溢出

将变量与其他日期、日期时间进行比较