![]() | 1 jazzychai 2020-09-28 11:05:12 +08:00 估计得循环一遍... |
2 namaste OP 有优雅点的办法吗?没有的话准备导出数据 golang 处理了 |
3 namaste OP 建个中间表,存下所有卡号跟对应 flag,去掉 flag=2 的,再汇总也是个办法。不过好麻烦,有没有直接能 select 出来的方法 |
4 whisper3032 2020-09-28 11:21:00 +08:00 这个记录方式就不优雅呀,为啥不是一张卡一行,就为了节省几行空间嘛 |
5 ApachW 2020-09-28 11:30:38 +08:00 可是可以 |
6 ticotic 2020-09-28 12:14:33 +08:00 游标+文本处理函数? |
7 ticotic 2020-09-28 12:30:30 +08:00 update card set flag=replace("2",""); 如果 flag 是字符串类型的话,试验了下可以有这个效果 |
8 ticotic 2020-09-28 12:31:22 +08:00 语句错了,是这个 update card set flag=replace(flag,"2", ""); 楼主可以先自建个表先试试 |
![]() | 9 netnr 2020-09-28 12:39:51 +08:00 写逻辑 SQL,遍历 flag,等于 1 取索引对应的号码,得出一列,全是在库,但不是连续的: 6666×××01 6666×××02 6666×××88 6666×××89 再想办法合并连续的号码 |
10 ticotic 2020-09-28 12:55:06 +08:00 会错意了,那还是 mysql 游标 内加循环判断再 insert 到新表里应该可以实现,感觉写起来也很麻烦,不必程序里简单 而且新表还是依旧连续卡号,以后还是会出现其中一些卡又被发掉的情况,容易形成 数据页空洞 和现在遇到的情况吧? |
11 namaste OP 感谢大家给的思路,我用了二分法,结合 locate 跟 posstr 函数。建了两张中间表相互 insert,搞定了 |