mysql,从表中选择全部

mysql,从表中选择全部,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

我有这张桌子

我想选择cat id=4,每隔一行它的cat父id等于。 e、 g.如果我想要cat id 4中的所有类别,则应生成cat id 4本身、2和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。我现在明白了,您需要一些递归解决方案。我的问题肯定行不通。