【发布时间】:2015-02-27 04:54:40
【问题描述】:
在 SQLite 中,当我这样做时
SELECT DISTINCT idvar
FROM myTable
LIMIT 100
OFFSET 0;
返回的数据是 100 行,在 myTable 中有(第一个)100 个不同的 idvar 值。这正是我所期望的。
现在,当我这样做时
SELECT *
FROM myTable
WHERE idvar IN (SELECT DISTINCT idvar
FROM myTable
LIMIT 100
OFFSET 0);
我希望来自myTable 的所有数据都对应于idvar 的这100 个不同值(因此,如果每个idvar 有不止一行,则返回的数据可能会超过100 行) .然而,我得到的是所有返回或多或少 100 行的 idvar 的许多不同值的所有数据。我不明白为什么。
想法?我应该如何构建一个返回我预期的查询?
上下文
我有一个 50GB 的表,我需要使用 R 进行一些计算。由于内存原因,我不可能将那么多数据加载到 R 中,所以我想分块工作。然而,重要的是每个块都包含给定级别idvar 的所有行。这就是我在查询中使用 OFFSET 和 LIMIT 的原因,并试图确保它返回 idvar 级别的所有行。
【问题讨论】:
-
您的描述不清楚。你所期望的和你得到的有什么区别?展示一些例子。