跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一个能否用 sql 快速解决的办法
未分類
30 9 月 2020

请教一个能否用 sql 快速解决的办法

请教一个能否用 sql 快速解决的办法

資深大佬 : namaste 0

遇到这样一个问题,表中有一堆卡号,给出的字段有起始卡号,终止卡号,卡是否发掉。号段都是按整数连续的
举例
begin_no | end_no | flag
6666×××01,6666×××05,11122
6667×××88,6667×××90,121
.
.
.
6668×××20,6668×××25,112121

其中 1 是在库,2 是发掉了的

有没有直接能几句 sql,去除发掉的卡,按连续卡一行的形式呈现

想要的结果:

begin_no | end_no | flag
6666×××01,6666×××03,111
6667×××88,6667×××88,1
6667×××90,6667×××90,1
.
.
.
6668×××20,6668×××21,11
6668×××23,6668×××23,1
6668×××25,6668×××25,1

大佬有話說 (11)

  • 資深大佬 : jazzychai

    估计得循环一遍…

  • 主 資深大佬 : namaste

    有优雅点的办法吗?没有的话准备导出数据 golang 处理了

  • 主 資深大佬 : namaste

    建个中间表,存下所有卡号跟对应 flag,去掉 flag=2 的,再汇总也是个办法。不过好麻烦,有没有直接能 select 出来的方法

  • 資深大佬 : whisper3032

    这个记录方式就不优雅呀,为啥不是一张卡一行,就为了节省几行空间嘛

  • 資深大佬 : ApachW

    可是可以

  • 資深大佬 : ticotic

    游标+文本处理函数?

  • 資深大佬 : ticotic

    update card set flag=replace(“2″,””);

    如果 flag 是字符串类型的话,试验了下可以有这个效果

  • 資深大佬 : ticotic

    语句错了,是这个

    update card set flag=replace(flag,”2″, “”);

    主可以先自建个表先试试

  • 資深大佬 : netnr

    写逻辑 SQL,遍历 flag,等于 1 取索引对应的号码,得出一列,全是在库,但不是连续的:
    6666×××01
    6666×××02
    6666×××88
    6666×××89
    再想办法合并连续的号码

  • 資深大佬 : ticotic

    会错意了,那还是 mysql 游标 内加循环判断再 insert 到新表里应该可以实现,感觉写起来也很麻烦,不必程序里简单

    而且新表还是依旧连续卡号,以后还是会出现其中一些卡又被发掉的情况,容易形成 数据页空洞 和现在遇到的情况吧?

  • 主 資深大佬 : namaste

    感谢大家给的思路,我用了二分法,结合 locate 跟 posstr 函数。建了两张中间表相互 insert,搞定了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具