sql - 数据库的一致只读 View

标签 sql database

我想执行一个选择查询,返回数据库中的大量数据。所述数据库迫使我将我的查询拆分为 10000 个结果的 block ,并带有 offset+limit。当我遍历这些 block 时,其他人更新了数据库,这在某些情况下可能会使数据库多次返回同一行。我通过一个后处理过滤器来处理这个问题,该过滤器删除了具有重复 ID 的行,但我想知道是否有一种方法可以构建一组 sql 查询,使我能够跨多个 select 语句获得数据库的连贯 View 。即,BEGIN+COMMIT 但用于选择。

我有没有提到我不是 sql 人?

最佳答案

你能不能:

按 ID 排序,获取前 10000 个,获取最后一个 ID。

第二次过滤大于最后一个 id,得到下一个 10000。

做同样的事情直到你完成

Select top(10000) * from Table order by id

获取最后一个id

Select top(10000) * from Table where id> LAST order by id

LAST 当然是用数字代替

水平很低,但应该可以解决问题并消除重复

关于sql - 数据库的一致只读 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136837/

相关文章:

java - 如果子查询的结果集列值为 NULL,则显示某个值

sql - 连接和分组多个表

php - SELECT FROM 以 JOIN 中的值命名的数据库

c# - Entity Framework 连接到 Oracle : ODP for . NET "does not support time"

java - 我的 php 代码连接到 android 数据库

sql - Postgresql 加入 2 个具有 km 范围的表

sql - SQL:按日期降序回头客?

mysql - 请问 "decay"有可能是SQL信息吗?

sql-server - 获取 SQL Server 中逗号分隔字段的值

Mysql - 来自两个表的另一个选择计数