mysql,从表中选择全部

时间:2011-09-06 14:58:42

标签: mysql union

我有这张桌子。

我想选择cat id = 4以及cat parent id等于的每隔一行。 例如如果我想要cat id 4中的所有类别,它应该导致cat id(本身),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)

但它会带来所有。我需要做一个工会吗?

2 个答案:

答案 0 :(得分:0)

SELECT *
FROM categories c
INNER JOIN (SELECT catparentid FROM categories where id = 4) a
ON c.catparentid = a.catparentid

答案 1 :(得分:0)

Union在这里没有帮助,因为你不知道你需要多少个工会(树的深度)。

较新的SQL标准支持传递闭包的计算,我认为使用WITH,但我不知道当前SQL服务器有多少支持。