mysql根据一个字段相同记录生成序号
主要用于生成树型层级数据,如原始数据:
1 2 3 | SELECT id_,name_,org_id_,org_cascade_id_ FROM sys_user ORDER BY org_id_ |
结果:
id_ | name_ | org_id_ | org_cascade_id_ 1 hp 1 0 2 管理员 1 0 3 超级用户 1 0 4 曹操 2 0.001
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | SELECT id_, name_, org_id_, org_cascade_id_, CONCAT(org_cascade_id_,'.',LPAD(rank,4,'0')) uocascade FROM ( SELECT tmp.id_, tmp.name_, tmp.org_id_, tmp.org_cascade_id_, @rownum:=@rownum + 1, IF(@porg = tmp.org_id_, @rank:=@rank + 1, @rank:=1) AS rank, @porg:=tmp.org_id_ FROM ( SELECT id_,name_,org_id_,org_cascade_id_ FROM sys_user ORDER BY org_id_ ) tmp, (SELECT @rownum:=0, @porg:=NULL, @rank:=0) a ) RESULT |
结果:
id_ | name_ | org_id_ | org_cascade_id_ | uocascade 1 hp 1 0 1 0.0001 2 管理员 1 0 2 0.0002 3 超级用户 1 0 3 0.0003 4 曹操 2 0.001 1 0.001.0001
Comments are currently closed.