mysql - 从源表离开的点每 1 小时从源表复制一次数据
问题描述
我正在尝试使用 mysql 查询/过程,它基本上将数据(不是所有数据,也不是来自所有字段)复制到另一个已经存在的表中,但该表中的字段名称与源字段不同。由于此 sql 查询将通过某个调度程序每 1 小时运行一次,因此它需要有一个应该知道/检查源表的逻辑,以便它不会再次复制相同的数据。我认为源表中需要一个标志。
表:产品收入日期 A MC 2020-10-11 B VI 2020-10-12 C MC 2020-10-12 D MC 2020-10-13
该表不断从前端应用程序实时添加记录。因此,每 1 小时后复制此数据的查询必须从上次离开的位置开始处理。
create table DemoTable (
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(20),
isMarried tinyint(1) DEFAULT 1
);
INSERT INTO DemoTable(ClientName,isMarried) values('Larry',0);
INSERT INTO DemoTable(ClientName) values('David');
INSERT INTO DemoTable(ClientName,isMarried) values('Mike',1);
INSERT INTO DemoTable(ClientName) values('Carol');
解决方案
如果您的另一个表也存储表中的主键(ClientID),DemoTable
那么您可以在不修改数据库结构的情况下执行以下操作。
Table Structure:
DemoTable - ClientID(Pk), CilentName, isMarried
DemoTable_New - Id(PK), ClientID, ClientName
INSERT INTO DemoTable_New (ClientId, ClientName)
SELECT d.ClientId, d.ClientName
FROM DemoTable d
LEFT JOIN DemoTable_New dn ON d.ClientId = dn.ClientId -- Make sure to do Left Join
WHERE dn.Id IS NULL; -- Only pick for which record was not found in DemoTable_New
推荐阅读
- python - TypeError: child_process_1.spawn is not a function
- google-apps-script - Google Apps 脚本 getSheetByName 返回 null
- javascript - 三角形相似吗?
- python - for 循环,numpy 和 sqlite
- javascript - 如何在javascript中检查数组是否已满
- java - Spring Boot 更改覆盖异常响应
- python - matplotlib中的pcolormesh重新缩放轴
- r - 给定另一列的三个最小值,我需要找到一列中的值
- jenkins - 如何使用 CURL 将多级单选参数传递给詹金斯作业?
- python - 如何确定两个熊猫系列是否在给定的时间间隔内