
有一个表,分为 4-5 个层级,每条都有一个父级 id,一级是 4 位 code,二级是 8 位,如表。 简化后表结构为: 
现在表里的 code 列出问题,数据乱了,想根据 level 和 parentid 重新编一下 code,除了一级一级重编,请教一下大神有没有快捷的办法,因为数据量比较大,手动比较慢。
1 downeywang OP 数据顺序不需要和原来一样,只要子父级从属关系没有变化就可以。 |
2 Takamine 2019-06-05 23:24:16 +08:00 via Android 可以写一个递递递递递递归归归归归归,重新更新一下值。:doge: |
3 Takamine 2019-06-06 00:17:12 +08:00 via Android 或者直接简单粗暴一点也行吧。 就按照 level 来,设置一个变量 n 表示当前是该 level 的第几个就好啦(同一个 level 要是超过了 9999 那就当我没说_(:з」∠)_)。 code 如果是 string 的话。 看规律是 f ( level+1 )= f ( level )+str ( 1001*n )吧。 先把 level=2 的都拿出来,因为 level=1 的已经确定了,跑一遍,把 level=2 的确定了,再把 level=3 的拿出来跑,以此类推。(ò ó) |
4 Takamine 2019-06-06 00:20:26 +08:00 via Android f ( level )需要根据 pid 去找一下。 |
5 Takamine 2019-06-06 00:36:39 +08:00 via Android Code ( id )= Code ( pid )+ str ( 1000+n ) 这样写比较合适吧。(ò ó) emmmmm...脑子已经睡着的状态了也不知道能不能帮到你_(:з」∠)_。 |
6 gavindexu 2019-06-06 07:02:27 +08:00 via iPhone code 字段的长度有变动吗? 没有变的话,考虑一下从长度入手? |
7 prophet1990 2019-06-06 09:05:19 +08:00 用 python 写一个脚本操作数据库,根据 level 和 parentid 循环处理一下 |
8 xuanbg 2019-06-06 09:09:02 +08:00 两层循环,第一层根据 level,第二层根据 parentid,就是 parentid 对应的 code 后面重新生成序列作为 code。 |
9 qwerthhusn 2019-06-06 09:18:30 +08:00 先温习一下树的广度遍历算法,你就知道咋写了 |
10 Terry001 2019-06-06 09:21:09 +08:00 先按长度分层,然后按顺序编号就行了 |
11 jorneyr 2019-06-06 09:48:32 +08:00 写程序重新生成一遍 code 吧 |