Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入新元素时,“限制偏移”是否稳定?_Sql_Limit_Offset - Fatal编程技术网

Sql 插入新元素时,“限制偏移”是否稳定?

Sql 插入新元素时,“限制偏移”是否稳定?,sql,limit,offset,Sql,Limit,Offset,让我们考虑一个场景 一张表有1000行 我查询了限制为100的行 查询后,将在表中插入一些行 然后,我再次查询,限制为100,偏移量为100 我希望结果与第一次查询无关 我希望在第一次查询后得到一个结果 我该怎么做?请帮助。 < P> SQL标准对表中的行的自然排序没有承诺。新行可以插入表的末尾或中间的任何位置。根据dbms插入行的位置(这可能取决于以前删除的行),第二个查询可以轻松地选择第一个查询中已经选择的行,或者在查询之间跳过一些行 我能想到的唯一可靠的方法是将整个表选择到一个临时表或游标

让我们考虑一个场景

一张表有1000行

我查询了限制为100的行

查询后,将在表中插入一些行

然后,我再次查询,限制为100,偏移量为100

我希望结果与第一次查询无关

我希望在第一次查询后得到一个结果


我该怎么做?请帮助。

< P> SQL标准对表中的行的自然排序没有承诺。新行可以插入表的末尾或中间的任何位置。根据dbms插入行的位置(这可能取决于以前删除的行),第二个查询可以轻松地选择第一个查询中已经选择的行,或者在查询之间跳过一些行

我能想到的唯一可靠的方法是将整个表选择到一个临时表或游标中,然后从第二个记录集中一次读取100条记录

您还可以在单个可序列化事务中执行所有查询,这将隐藏其他用户在您的事务期间执行的任何插入或删除操作,但即使这样也不是一个万无一失的解决方案