gpt4 book ai didi

SQL 范围组开始和结束 ID

转载 作者:行者123 更新时间:2023-11-29 12:44:18 26 4
gpt4 key购买 nike

我有一个查询,我想分成大小为 200 的“ block ”并返回每个“ block ”的开始 ID 和结束 ID。

例子:

select t.id
from t
where t.x = y --this predicate will cause the ids to not be sequential

如果示例是我试图分成“ block ”的查询,我想返回:

(第一个 ID,第 200 个 ID),(第 201 个 ID,第 400 个 ID)...(最终范围 ID 的开始,范围 ID 的结束)

编辑:对于最终范围,如果它不是完整的 200 行,它仍应在查询中提供最终 ID。

有没有办法仅使用 SQL 来执行此操作,还是我必须求助于应用程序处理和/或类似于分页实现的多个查询?

如果有在 SQL 中执行此操作的方法,请提供示例。

最佳答案

嗯,我认为最简单的方法是使用 row_number():

select id
from (select t.*, row_number() over (order by id) as seqnum
from t
where t.x = y
) t
where (seqnum % 200) in (0, 1);

编辑:

根据您的意见:

select min(id) as startid, max(id) as endid
from (select t.*,
floor((row_number() over (order by id) - 1) / 200) as grp
from t
where t.x = y
) t
group by grp;

关于SQL 范围组开始和结束 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33288258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com