mysql - 使用 mysql 按数据导入日期按日期在现有数据集中查找唯一/新值

标签 mysql sql subquery unique date-range

我们的 mysql 数据库处理化合物的仓储和季度更新。我们有兴趣寻找最近每季度上传的独特化合物 - 因此以前从未见过的化合物 (ChemID)。

我已经使用我在挖掘类似问题/解决方案时发现的日期范围尝试了下面的一些代码,但无法使其适用于我的应用程序。这是我的尝试 1,它返回 NULL 或变体超时(在 ChemCaseReports 中处理大约 1300 万行)。

请注意,真正的最新 ImportDate(日期时间类型)是“2012-06-12 05:58:16”。

尝试 1:

SELECT DISTINCT ChemID
FROM Chem_CaseReports a 
WHERE a.ImportDate = '2012-06-12 05:58:16'
AND NOT EXISTS
(
 SELECT * FROM Chem_CaseReports b 
 WHERE a.ChemID = b.ChemID
 AND b.ImportDate <= '2012-06-12 05:58:16'
)

子查询中的 * 是否有必要避免 ChemID.a 和 .b 之间的歧义?我是否需要添加 GROUP BY 或 HAVING 子句,或者最初在我的初始选择中提供像 GROUP_CONCAT 这样的聚合参数。

我有数学学习障碍,所以问题可能很简单,就像在我的日期时间上翻转 gt、eq 或 lt 符号一样简单。

感谢您的帮助!

最佳答案

乍一看,您需要更改的是 <=<

理由

你原来的NOT EXISTS使用 <= 包括您需要保留的所有记录。

语句变成

SELECT DISTINCT ChemID
FROM Chem_CaseReports a 
WHERE a.ImportDate = '2012-06-12 05:58:16'
AND NOT EXISTS
(
 SELECT * FROM Chem_CaseReports b 
 WHERE a.ChemID = b.ChemID
 AND b.ImportDate < '2012-06-12 05:58:16'
)

关于mysql - 使用 mysql 按数据导入日期按日期在现有数据集中查找唯一/新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039145/

相关文章:

写入mysql时PHP超时

php - 获取同一列和单个 MySQL 查询中两个单独日期范围的值之和

mysql - 在mysql中使用日期类型字段优化查询

sqlite - 如何在子查询中引用结果

MySql 子查询 : average difference, 按列分组

php - 需要一个脚本将 MySQL 数据库中的信息覆盖在背景图像上并导出为 PDF

php - 闻起来像 AJAX 但我不确定

sql - 使用参数更新存储过程来自不同表的列名

mysql - WHERE NOT EXISTS 不适用于尾随空格

PHPExcel 下载无法正常工作