我面临着一些非常奇怪的,意外的行为,关于不同SELECT查询之间的一些不一致,我不知道这是否来自SQLite库,损坏的数据等。
我有一个带有下表的数据库文件,名为ResultTable10,结构如下:
如果我使用最暴力和残酷的SELECT查询:
SELECT * FROM ResultTable10
然后我使用SQLite浏览器(http://sqlitebrowser.org/)
滚动数据让我们去,例如Loop = 124
让我们再滚动一下Loop = 125
根据数据提供者,给定循环值的行数总是相同的(并且给定者循环数的列Step的值也总是相同的,顺便说一下,也是相同的顺序)。 / p>
然而,我发现显然如果我只是坚持SQL SELECT查询结果,这实际上不是那个〜真的:
似乎两个不同循环(分别为循环124和125)的字段Step的最小值不相同(分别为Step)
此外,以下针对Step = 508的查询也会返回不一致的结果:
SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop = 125;
在这里,我可以清楚地看到我在滚动整个数据集之前所得到的内容。
SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop = 124;
但是现在关于Loop = 124的查询没有显示我之前看到的任何结果。
SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop BETWEEN 124 AND 125;
如果在WHERE子句中传递了两个循环,那似乎很好
是否有其他人已经遇到过这种不一致,任何可能的修复,解决方法(除了重写所有数据或执行大量查询)?
这种行为可能来自哪里? (数据损坏,我的SQL语句中的拼写错误等)
编辑: 我似乎遇到了一些腐败问题,我试图用System.Data.SQLite .NET库进行更多挖掘,最后我得到了一些查询。 那 :
任何防止那些令人讨厌的腐败的一般指导方针? (我已经在这里检查了一个:http://www.sqlite.org/howtocorrupt.html)