2016-06-21 113 views
0

您可能(或可能不知道)已经知道,SQLite不提供有关查询结果总数的信息。必须将查询包装在SELECT count(*) FROM (original query);中才能获得行数。在SQLite中计算结果,给出具有函数的查询

这对我来说非常合适,直到用户创建自定义SQL函数(您可以在SQLite中定义自己的函数)将INSERT转换为另一个不相关的表。然后他执行查询:

SELECT customFunction() FROM primaryTable WHERE primaryKeyColumnId = 1; 

查询总是返回1行,这是肯定的。事实证明,customFunction()被调用了两次(并插入到其他表中的2行),这是因为我的应用程序称为他的查询为usuall,然后在该查询中调用count(*)作为后续。

如何解决这个问题?如何只执行原始查询并且仍然有来自SQLite的行计数?

我正在使用SQLite(3.13.0)C API。

回答

0

您必须从查询中删除此类函数调用,或者在实际遍历所有结果行之前无法获取行计数。