在sql中给出模数200的偏移结果

时间:2015-03-04 09:33:27

标签: sql postgresql

我有表tbl,其中包含800行。我需要编写一个查询,其行如下200行:

1

SELECT id FROM tbl ORDER BY id OFFSET 100 LIMIT 200;

返回

 id
----
101
 .
 .
 .
300

没关系,但是

SELECT id FROM tbl ORDER BY id OFFSET 700 LIMIT 200;

返回

 id
----
701
 .
 .
 .
800

但我需要返回

 id
----
701
 .
 .
 .
800
 1
 2
 .
 .
 .
100

如何修改查询,以便在我们到达结尾时从表的开头返回?是否可以不使用UNION

1 个答案:

答案 0 :(得分:1)

我不知道怎么做而不使用union all,但我可能会使用以下内容:

with looped_table as (
  ( select id from tbl order by id )
union all
  ( select id from tbl order by id )
)
select id from looped_table offset 700 limit 200;