postgresql 查询缺失的序号

最近爬某数据,为了效率用了线程,但是偶尔连接缺失,所以爬下来的结果中会有缺失的数据
这里希望找出缺失的序号,再次爬数据`
例如表名为target_table,希望查缺失的列叫_seq

select * from (
select x._seq - y._seq as shift,x._seq,y._seq from
(select 1+ROW_NUMBER() over(order by _seq desc ) as _id_,_seq from target_table order by _seq desc ) as x,
(select ROW_NUMBER() over(order by _seq desc ) as _id_,_seq from target_table order by _seq desc ) as y 
where x._id_ = y._id_ ) as z 
where shift <> 1`

逻辑就是先把需要找的序列_seq排序,同时加上一个row_number作为索引,然后同样生成另一个表,row_number + 1
然后把两张表用row_number拼接,然后用where筛选 _seq相减不等于1的值

效率应该还能接受,测试数据64w条,跑了3s多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值