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;

つまり、サブクエリで外部クエリ (on ) 列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

これは、OFFSETandLIMIT句内の式が外部クエリの列を参照できないことを意味します。

この動作は SQLite エンジンの制限ですか?

それとも私はいくつかのポイントを逃していますか?

4

1 に答える 1

1

これは実際、これまでのすべての SQLite バージョンの制限です。( OFFSET/LIMITは非標準の拡張子であるため、これを許可するかどうかは指定されていません。)

于 2013-10-10T14:00:34.740 に答える