现有mysql数据库表结构如下:
table1表:
id | parent_id | value1 | value2 | value3 | value4 |
---|---|---|---|---|---|
1 | a | b | c | d | |
2 | 1 | e | f | g | h |
3 | 1 | i | j | k | l |
其中第二条及第三条的parint_id与第一条的id进行关联,即第二条、第三条为第一条的子集。
现在想构造sql语句,完成以下效果:
1,支持value1、value2、value3、value4进行搜索;
2,通过parnt_id为空,查询所有“非子集”的数据,select * from table1 where parnt_id is null;
3,数据量比较大,需要支持分页 limit 0,10;
4,查询该sql查询结果支持树形结构展示。
如何实现呢?
`
{
"id":1,
"value2":"b",
"value3":"c",
"value4":"d",
"children":[
{
"id":2,
"value1":"e",
"value2":"f",
"value3":"g",
"value4":"h"
},
{
"id":3,
"value1":"i",
"value2":"j",
"value3":"k",
"value4":"l"
}
]
}
`
sql 做不到,建议读取数据后在后端转换为树形结构再传回前端即可。数组与树的相互转换是经典算法问题,不想自己研究的话可以直接下载类库,基本上主流语言都有相似类库。