mysql,从表中选择全部
我有这张桌子 我想选择cat id=4,每隔一行它的cat父id等于。 e、 g.如果我想要cat id 4中的所有类别,则应生成cat id 4本身、2和1mysql,从表中选择全部,mysql,union,Mysql,Union,我有这张桌子 我想选择cat id=4,每隔一行它的cat父id等于。 e、 g.如果我想要cat id 4中的所有类别,则应生成cat id 4本身、2和1 +-------------------------------+ | id | catname | catparentid | +-------------------------------+ |1 | home | 0 | |2 | products | 1
+-------------------------------+
| id | catname | catparentid |
+-------------------------------+
|1 | home | 0 |
|2 | products | 1 |
|3 | men | 2 |
|4 | women | 2 |
|5 | shirts | 3 |
|6 | outdoor | 0 |
+-------------------------------+
我试过:
SELECT * FROM categories c
where c.id = 4
c.catparentid IN (SELECT id FROM categories)
但它带来了一切。我需要参加工会吗 联合在这里不会有帮助,因为您不知道需要多少个联合才能达到树的深度
SELECT *
FROM categories c
INNER JOIN (SELECT catparentid FROM categories where id = 4) a
ON c.catparentid = a.catparentid
较新的SQL标准支持传递闭包的计算,我想使用WITH,但我不知道在当前的SQL服务器中有多少支持。您需要什么深度?它应该递归地继续寻找匹配的东西,还是只寻找2-3个级别以下的东西……本文提供了一些有用的信息:尽可能多的信息,直到它等于0。我现在明白了,您需要一些递归解决方案。我的问题肯定行不通。