sql 中的不同谓词导致访问崩溃



我正在Access中编写一个查询,它非常简单:

SELECT fieldName FROM table;

这工作得很好,但是如果我尝试以下查询,访问将不会响应并崩溃:

SELECT DISTINCT fieldName FROM table;

注意:这不是我第一次在数据库中使用 distinct 子句。

可能值得注意的是:它正在查询的表是另一个查询,其形式为 -

SELECT * from otherTable where otherField IN 
                                         (SELECT otherField2 from otherTable2); 

有没有人有任何线索可能导致这种情况?

可能是您的数据库已损坏。 尝试紧凑型和维修。

IN 关键字会减慢访问速度,尤其是像您尝试的那样查询查询。您可以尝试加入,例如:

从其他表中选择 * 左加入其他表2ON otherTable.otherField=otherTable2.otherField2

如果 otherTable2 中每个父记录仅包含 0 或 1 条记录,则 JOIN 将仅返回与原始查询相同的记录集。 您可以在所有方案中实现相同的结果

SELECT DISTINCT otherTable.*
FROM otherTable INNER JOIN otherTable2
  ON otherTable.otherField = otherTable2.otherField2

这将返回可编辑的记录集。 我怀疑性能会与 IN 查询有任何不同。 如果 IN 查询在压缩和修复后仍然崩溃 Access,则可以尝试一下。

最新更新