组织编号使用层级方式,比如总公司是 0001,分公司是 00010100,分公司部门是 000101000010。
每一级都使用直接上级的编号并加上本级编号。
现在给定任意一个部门编号,查询出他本身及其所有上级,请问 SQL 该怎么编写呢?
数据库是 MySQL。
先谢过各位大佬解惑。
1
linauror 2019-04-28 11:07:31 +08:00
既然编号这么有规律,程序先直接按长度取编号,可以确定出上级编号及上上级编号...,再去查呢
|
3
imicksoft 2019-04-28 11:15:16 +08:00
|
4
liprais 2019-04-28 11:15:52 +08:00
mysql 做不到
需要使用 recursive cte |
5
chenset 2019-04-28 11:18:19 +08:00
|
6
youyaang 2019-04-28 11:20:21 +08:00
SELECT MID(id, LENGTH(id)-4, LENGTH(id)) AS LastLvId FROM DB_xx;
没测试过,不知道能不能用=。= |
7
xinyewdz 2019-04-28 12:23:33 +08:00
慎用 join 操作
|
8
littlewing 2019-04-28 13:16:47 +08:00
不管怎样都是全表扫描
所以为什么不把层级关系存起来呢 |
9
xxxy 2019-04-28 18:27:38 +08:00
我有一个简单的方法。用程序串行去查询。
|