mysql - 将查询从 NOT IN 更改为 NOt EXISTS

标签 mysql vba

我对 VBA 编程有点陌生。我写的这段代码现在变慢了。我最近刚从后端表转移到 SQL 表。我正在使用的查询使用 NOT IN。我在某些地方读到使用 NOT EXISTS 可能会加快速度。这是我的代码。我需要将其转换为 NOT EXISTS,但我不确定如何:

SELECT BatchID
FROM TblBatchInfo
WHERE (IsNull([RSOutDateTime])=False) 
     AND (IsNull([HBDropDateTime])=False)
     AND (Format([BatchDateTime],"Short Date")=Format(Now(),"Short Date"))
     AND (IsNull(PSPassedOut=True) OR (PSPassedOut=""))
     AND LEN(LabelID)=9 
     AND [Area] <> 5
     AND [Area] <> 6
     AND [Area] <> 7
     AND (BatchID Not In (SELECT [BatchID]
                                          FROM [TblBatchInfo]
                                          WHERE (IsNull([RSOutDateTime]) = True)
                                           AND LEN(LabelID)=9
                                           AND [Area] <> 5 
                                           AND [Area] <> 6
                                           AND [Area] <> 7
                                           AND (Format([BatchDateTime], "Short Date") = Format(Now(), "Short Date"))))
GROUP BY BatchID
ORDER BY BatchID;

最佳答案

使用表别名是因为在子查询中您将引用两个表。你也可以做 NOT IN (5,6,7)而不是多个 <> .

SELECT BatchID
FROM TblBatchInfo x
WHERE (IsNull([RSOutDateTime])=False) 
     AND (IsNull([HBDropDateTime])=False)
     AND (Format([BatchDateTime],"Short Date")=Format(Now(),"Short Date"))
     AND (IsNull(PSPassedOut=True) OR (PSPassedOut=""))
     AND LEN(LabelID)=9 
     AND [Area] NOT IN (5,6,7)
     AND NOT EXISTS (SELECT 1 [BatchID]
                     FROM [TblBatchInfo] y
                     WHERE (IsNull([RSOutDateTime]) = True)
                         AND x.[BatchId] = y.BatchID
                         AND LEN(LabelID)=9
                         AND [Area] NOT IN (5,6,7) 
                         AND (Format([BatchDateTime], "Short Date") = Format(Now(), "Short Date"))
                    )
GROUP BY BatchID
ORDER BY BatchID;

关于mysql - 将查询从 NOT IN 更改为 NOt EXISTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35346366/

相关文章:

php - 将Mysql时间戳转换为发布后的时间

mysql - 如何在mysql中添加多个总计?

php - 扩展 attach() 方法?

excel - 在 Excel 中过滤大型列表的最佳方法是什么?

mysql工作台 "Lost connection to mysql server"

php - 从数据库获取用户ID

vba - 将字典放入类中

vba - 我在这个二变量优化程序中遇到溢出问题

vba - 如何刷新 Access 表单

html - 通过 VBA 更改 Amazon ComboBox