有一个表,分为 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 吧
|