2

如果我定义SQLITE_OMIT_SUBQUERY我不能运行子查询子句。如何修改源代码以禁用优化并运行为:

当子查询出现在 SELECT 的 FROM 子句中时,最简单的行为是将子查询评估为临时表,然后针对临时表运行外部 SELECT。

4

1 回答 1

2

只需打破文档中列出的规则之一。

最简单的方法是添加一个OFFSET无效的子句:

SELECT ...
FROM (SELECT ...
      FROM ...
      LIMIT -1 OFFSET 0)
WHERE ...

如果您真的想更改源代码:只需从flattenSubquery函数中返回select.c而不做任何事情。它的开头已经有以下行:

if( OptimizationDisabled(db, SQLITE_QueryFlattener) ) return 0;
于 2013-07-23T12:03:54.227 回答