mysql中的无限分类——查询所有父类
2014-10-16 15:26
363 查看
[b]mysql递归查询,mysql中从子类ID查询所有父类(做无限分类经常用到)
[/b]
由于mysql 不支持类似 oracle with ...connect的 递归查询语法
之前一直以为类似的查询要么用存储过程要么只能用程序写递归查询.
现在发现原来一条sql语句也是可以搞定的
先来看数据表的结构如下:
id name parent_id
---------------------------
1 Home 0
2 About 1
3 Contact 1
4 Legal 2
5 Privacy 4
6 Products 1
7 Support 1
我要的要求是根据一个分类ID(这个分类ID可能是一个子分类),得到所有的父分类,下面是相应的SQL:
的所有父类。结果如下
1, ‘Home’
2, ‘About’
4, ‘Legal’
5, ‘Privacy’
[/b]
由于mysql 不支持类似 oracle with ...connect的 递归查询语法
之前一直以为类似的查询要么用存储过程要么只能用程序写递归查询.
现在发现原来一条sql语句也是可以搞定的
先来看数据表的结构如下:
id name parent_id
---------------------------
1 Home 0
2 About 1
3 Contact 1
4 Legal 2
5 Privacy 4
6 Products 1
7 Support 1
我要的要求是根据一个分类ID(这个分类ID可能是一个子分类),得到所有的父分类,下面是相应的SQL:
SELECT T2.* FROM ( SELECT @r AS _id, (SELECT @r := parent_id FROM table1 WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl FROM (SELECT @r := 5, @l := 0) vars, table1 h WHERE @r <> 0) T1 JOIN table1 T2 ON T1._id = T2.id ORDER BY T1.lvl DESC
的所有父类。结果如下
1, ‘Home’
2, ‘About’
4, ‘Legal’
5, ‘Privacy’
相关文章推荐
- mysql中从子类ID查询所有父类(做无限分类经常用到)
- mysql递归查询,mysql中从子类ID查询所有父类(做无限分类经常用到)
- mysql中从子类ID查询所有父类(做无限分类经常用到)
- Oracle无限分级下查询指定分类下所有子分类
- MySQL命令显示所有可供查询的分类
- sql 查询:无限极分类,获取父类下所有子类
- MySQL无限分类的数据表设计以及各种查询
- 无限级分类查询一个栏目下的所有子栏目
- MySQL无限分类的数据表设计以及各种查询
- mysql 创建函数(根据子类,依据父类id,循环查询出所有父类名)
- mysql从子类id查询所有父类
- MySQL 获取某一个分类ID的所有父或子分类查询结果
- mysql 根据子类id查询所有父类id
- mysql查询所有分类的前5行结果
- mysql 更具父类id 查询所有子类id
- mysql 根据子分类获取所有父类
- Oracle无限分级下查询指定分类下所有子分类Sql
- mysql从子类id查询所有父类
- 联合查询(查找所有分类及其父类)
- sql查询的无限分类查询的设计