SQLite错误:复合SELECT中的术语太多

谢小进*_*谢小进 13 sqlite select ios

当我向sqlite数据库文件中插入太多数据时,会发生错误"复合SELECT中的术语过多".我用" insert into ... select ... union select ... union ...".我知道它有太多的select语句,但我的问题是:复合SELECT语句中的最大术语数是多少?

sho*_*fee 25

复合SELECT语句是由运算符UNION,UNION ALL,EXCEPT或INTERSECT连接的两个或多个SELECT语句.我们将复合SELECT中的每个SELECT语句称为"术语".

SQLite中的代码生成器使用递归算法处理复合SELECT语句.因此,为了限制堆栈的大小,我们限制了复合SELECT中的术语数量.最大术语数是SQLITE_MAX_COMPOUND_SELECT,默认为500.我们认为这是一个慷慨的分配,因为在实践中我们几乎从未看到复合选择中的术语数超过一位数.

使用sqlite3_limit(db,SQLITE_LIMIT_COMPOUND_SELECT,size)接口可以在运行时降低复合SELECT术语的最大数量.

有关详细信息,请查看此... http://www.sqlite.org/limits.html

  • @shobi因为旧版本的sqlite(<3.7.11)不允许使用INSERT INTO tablename(columnname)VALUES(value1),(value2)插入多行,所以很容易得到一个解决方法> 500 UNION术语,用于简单插入,如INSERT INTO tablename(columnname)SELECT value1 AS`columnname`UNION SELECT value2 UNION SELECT value3 ... UNION SELECT value999 (6认同)