我正在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,则可以尝试一下。