设计树形结构,后面再研究下是否可行数据结构
若是你的树深度是可预期的话,有个超简单的数据结构。你须要3个字段来表达这个树:spa
其中,key字段的值为:从跟节点到父节点的primary key,中间用任意非数字符号分割。设计
例如如下树状结构code
├── a │ ├── d │ │ ├── p │ │ ├── q │ │ └── r │ ├── e │ └── f ├── b │ ├── x │ ├── y │ └── z ├── c
| id | value | parent_id | key | level |
| 1 | a | 0 | "-" | 1 | | 2 | b | 0 | "-" | 1 | | 3 | c | 0 | "-" | 2 | | 4 | d | 1 | "1-" | 2 | | 5 | e | 1 | "1-" | 2 | | 6 | f | 1 | "1-" | 2 | | 7 | x | 2 | "2-" | 2 | | 8 | y | 2 | "2-" | 2 | | 9 | z | 2 | "2-" | 2 | | 10 | p | 4 | "1-4-" | 3 | | 11 | q | 4 | "1-4-" | 3 | | 12 | r | 4 | "1-4-" | 3 |
因而,在给定一个节点d的时候,string
select * from table_name where key like "${d.id}-${d.key}-%"
select * from table_name where key like "${d.id}-${d.key}-%" and level=${d.level}+1