我有一个选择查询,它将返回类似于下表的内容:
开始 | 停止 | ID ------------------ 0 | 100 | 1 1 | 101 | 1 2 | 102 | 1 2 | 102 | 2 5 | 105 | 1 7 | 107 | 2 ... 300 | 400 | 1 370 | 470 | 1 450 | 550 | 1
其中停止 = 开始 + n; 在这种情况下,n = 100。
我想合并每个 id 的重叠:
开始 | 停止 | ID ------------------ 0 | 105 | 1 2 | 107 | 2 ... 300 | 550 | 1
id 1 不给出 0 - 550,因为开始 300 在停止 105 之后。
第一次查询会返回几十万条记录,n 可以达到几万条,所以处理得越快越好。
顺便说一句,使用 PostgreSQL。