我在 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
。
这意味着OFFSET
andLIMIT
子句中的表达式不能引用外部查询中的列。
这种行为是对 SQLite 引擎的限制吗?
还是我错过了一些观点?