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

当我将太多的数据插入到sqlite数据库文件时,会出现错误“复合SELECT中的词条太多”。 我使用“ insert into ... select ... union select ... union ... ”。 我知道这是太多的select语句,但我的问题是:复合SELECT语句中的最大数量是多less?

复合SELECT语句是由运算符UNION,UNION ALL,EXCEPT或INTERSECT连接的两个或多个SELECT语句。 我们在复合SELECT中调用每个单独的SELECT语句“term”。

SQLite中的代码生成器使用recursionalgorithm处理复合SELECT语句。 为了限制堆栈的大小,我们因此限制了复合SELECT中的项的数量。 最大数量的项是SQLITE_MAX_COMPOUND_SELECT,默认为500.我们认为这是一个慷慨的分配,因为在实践中,我们几乎从不会看到复合select中的项数超过了单个数字。

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

欲了解更多详情请查阅… http://www.sqlite.org/limits.html

您使用的SELECT数量没有限制。 您只需检查列的列表是否与INSERT列匹配。