如何将 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 表与第一个表中的日期范围和第二个表中的日期