2016-06-21 92 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

您必須從查詢中刪除此類函數調用,或者在實際遍歷所有結果行之前無法獲取行計數。