OFFSET和LIMIT表达式范围

时间:2013-10-10 13:37:12

标签: sqlite

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

想象一下以下架构:

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

如果a有这样的子查询,

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

它有效,这意味着在t2上的子查询中,您可以引用外部查询(在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

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

此行为是否是SQLite引擎的限制?

或者我错过了一些观点?

1 个答案:

答案 0 :(得分:1)

到目前为止,这确实是所有SQLite版本的限制。 (OFFSET / LIMIT是非标准扩展名,因此未指定是否允许此扩展名。)