我正在运行一系列查询,首先从一个视图中选择所有并将其发布到一个新擦除的表中:
DELETE FROM GTMP_PROGRESS
WHERE OBJID IS NOT NULL;
INSERT IGNORE INTO GTMP_PROGRESS
SELECT * FROM GTMP_PROG_VIEW;
这些查询工作正常。 GTMP_PROGRESS中的数据看起来与视图中的数据完全相同。
然后 - 我使用各个表运行一系列JOIN来根据条件更新GTMP_PROGRESS。以下是几个例子:
UPDATE IGNORE GTMP_PROGRESS AS gtmp
JOIN (SELECT cast(EU AS UNSIGNED) AS eu
, MAX(START_TIME) AS max
, CLUSTER_COMPLETE AS complete
FROM `BENIN_CLEAN`
GROUP BY EU) AS benin
ON gtmp.EUID = benin.EU
SET gtmp.Completed_Date = benin.max
WHERE benin.complete>0;
UPDATE IGNORE GTMP_PROGRESS AS gtmp
JOIN (SELECT cast(EU AS UNSIGNED) AS eu
, MAX(START_TIME) AS max
, CLUSTER_COMPLETE AS complete
FROM `IMPACT_CAMBODIA_CLEAN`
GROUP BY EU) AS cambodia
ON gtmp.EUID = cambodia.EU
SET gtmp.Completed_Date = cambodia.max
WHERE cambodia.complete>0;
这持续约30个连接。在这些JOIN查询结束时,我有以下日期时间的577个Completed_Date字段条目:" 2013-03-08 01:50:31"。具有此日期时间的EU不是应受JOIN查询影响的EU ...这些是原始VIEW表中存在的条目。在运行这些JOIN查询之前,Completed_Date的值是另一个datetime或Completed_Date字段为NULL。
一些历史记录是,在Completed_Date字段进行所有日期的标准化之前,这些查询完美地运行,因此它们被限定为datetime字段。 _CLEAN表格总是专门使用日期时间格式,所以我不知道这是否会导致问题。
我无法理解这一点。