1

我在 SQLite(3.7.16.2)中发现了以下限制(?):

想象一下以下架构:

CREATE TABLE t1 (v);
CREATE TABLE t2 (v);

如果有这样的子查询,

SELECT *, (SELECT COUNT() FROM t2 WHERE t2.v = t1.v) FROM t1;

它有效,这意味着在子查询中t2您可以引用外部查询(on t1)列。

然而,

SELECT *, (SELECT COUNT() FROM t2 LIMIT t1.v) FROM t1;

或者

SELECT *, (SELECT COUNT() FROM t2 LIMIT 1 OFFSET t1.v) FROM t1;

失败并出现错误Error: no such column: t1.v

这意味着OFFSETandLIMIT子句中的表达式不能引用外部查询中的列。

这种行为是对 SQLite 引擎的限制吗?

还是我错过了一些观点?

4

1 回答 1

1

到目前为止,这确实是所有 SQLite 版本的限制。(OFFSET/LIMIT是一个非标准的扩展,所以没有指定是否应该允许。)

于 2013-10-10T14:00:34.740 回答