MYSQL查找n天内没有更新日志条目的帐户

标签 mysql subquery

我有一个 SQL 查询需要帮助...

基本上我有两个需要使用的表。一个包含客户帐户,另一个包含客户服务代表与客户交互的日志。我希望此查询为我提供过去 14 天内没有日志条目(交互)的任何帐户的 ID。我还想过滤掉一些不相关的代表帐户(使用您将看到的分配给字段)。另外,日志表中的日期格式是时髦的非标准,我无法更改它,因为我没有编写的软件也使用这个数据库。

这两个表是cm.dbs(客户帐户)cm.log(交互日志)

这是我提出的查询,但需要FOREVER才能运行。子查询工作得很好,只需要几分之一秒的时间,但是当主查询与子查询一起运行时,它的速度慢得令人难以置信。我猜这是因为子查询正在为主查询中的每一行运行(并且不需要),但我对如何解决这个问题一无所知,因为我不是 SQL 专家,我知道足够的知识来创建基本到中级的查询,这不是我以前做过的事情。

这是我迄今为止创建的查询:

    SELECT id FROM cm.dbs WHERE id NOT IN (SELECT filenumber FROM cm.log 
    WHERE STR_TO_DATE(logdate, '%m/%d/%Y') 
   BETWEEN DATE_SUB(NOW(), INTERVAL 14 DAY) 
   AND NOW() 
   GROUP BY filenumber) 
   AND assignedto != 'OLD_ACCTS' 
   AND assignedto != 'HOUSE_ACCOUNTS' 
   AND assignedto != 'PAID_ACCOUNTS';

子查询查找最近两周内在日志表中具有条目的所有帐户。它完美地完成了这项工作。然后,技巧是让主查询找到所有没有条目的帐户。

另请注意,cm.log 中的 filenumber 字段对应于 cm.dbs 表中的 id

我可能是以一种完全愚蠢的方式处理这个问题的,而且我也不得不承认这一点。任何有关使其正确有效地工作的意见都将受到赞赏。我也喜欢任何人推荐的修复/更改的解释。我不仅仅是想要为我构建一个查询,我想了解我做错了什么以及如何做得更好,以便下次我可以自己解决这个问题。我很少问这样的问题,我通常自己解决问题,但这让我难住了。

编辑:这是表中相关字段的部分架构:

cm.dbs:

id  int(10) UN PK AI

title   varchar(45) 

firstname   varchar(200) 

middlename  varchar(200) 

lastname    varchar(200) 

fullname    varchar(200) 

address varchar(200) 

address2    varchar(200) 

city    varchar(200) 

state   varchar(200) 

zip varchar(50) 

assignedto  varchar(200) 

...

cm.log:

id  int(10) UN PK AI

filenumber  varchar(200) 

agentname   varchar(200) 

logtime varchar(200) 

logdateandtime  varchar(200) 

logdate varchar(200) 

logmessage  mediumtext 

最佳答案

您的查询对我来说看起来是正确的,除了下面的更改(因为您有多个 assignedto 值需要检查,请使用 IN 运算符,而不是将它们放在单独的 或仅。)

SELECT id FROM cm.dbs WHERE id NOT IN (SELECT filenumber FROM cm.log 
    WHERE STR_TO_DATE(logdate, '%m/%d/%Y') 
   BETWEEN DATE_SUB(NOW(), INTERVAL 14 DAY) 
   AND NOW() 
   GROUP BY filenumber) 
   AND assignedto NOT IN ('OLD_ACCTS','HOUSE_ACCOUNTS','PAID_ACCOUNTS');

关于MYSQL查找n天内没有更新日志条目的帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141692/

相关文章:

php - 我想将软件许可证 key 加扰/解密到 mysql 数据库中/从中加扰

mysql - 在 MySQL 中的同一字段上使用多个 group_concat 和 group by

MySQL order by count子查询

swift - NSPredicateEditor 与 Core Data 的关系

mysql - 在不同数据库上组合两个子选择而无需引用

mysql - 在 MySQL 中索引和查询分析表的最佳方式

mysql select语句?

php - 计算不同的行数

PHP,文本在没有换行的情况下从数据库中回显,全部合而为一

MYSQL连接子查询问题