我有这张桌子。
我想选择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)
但它会带来所有。我需要做一个工会吗?
答案 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服务器有多少支持。