让我们考虑一个场景。
表中有1000行。
我用LIMIT 100查询了行。
查询后,表中插入了一些行。
然后,我再次询问,LIMIT 100和OFFSET 100。
我希望结果独立于thr first query。
我想在第一次查询后得到一个结果。
我该怎么做?请帮忙。
答案 0 :(得分:0)
SQL标准对表中行的自然排序没有任何承诺 - 可以在表的末尾或中间的任何位置插入新行。根据dbms插入行的位置(可能取决于先前删除的行),第二个查询可以轻松选择第一个查询中已选择的行,或者在查询之间跳过一些行。
我认为可靠地做你想要的唯一方法是将整个表选择成临时表或光标,然后从第二个记录集中一次读取100个记录。
您还可以在单个可序列化的事务中执行所有查询(这将隐藏其他用户在您的事务期间执行的任何插入或删除),但即使这样也不是一个万无一失的解决方案。