选择其父类别为1的类别

时间:2019-04-17 10:46:54

标签: sql sql-server

我有此表类别

|catId  |catName|catParentID|catType|
-------------------------------------
|1      |cat1   |null       |6      |
|2      |cat2   |null       |9      |
|3      |cat3   |1          |6      |
|4      |cat4   |2          |9      |
|5      |cat5   |1          |6      | 
|6      |cat6   |3          |8      |

父级与子类别位于同一表中,只有它们没有父级。

我需要获取其父类型为6的所有子类别。

上面示例的输出应如下所示-

cat3
cat5

4 个答案:

答案 0 :(得分:0)

鉴于您的数据结构,这似乎可行:

select c.*
from categories c
where c.catParentID is not null and -- has a parent
      c.catType = 6;

但是,这可能不是一个通用的解决方案。因此,您可以使用自联接:

select c.*
from categories c join
     categories cp
     on c.catParentID = cp.catID
where cp.catType = 6;

答案 1 :(得分:0)

SELECT *
FROM   categories
WHERE  cattype = 6
       AND catparentid IS NOT NULL  

答案 2 :(得分:0)

最简单的方法是

SELECT * FORM categories WHERE catParentId ='1' AND catType ='6'

答案 3 :(得分:0)

尝试一下...(根据您的期望输出)

SELECT t1.*
FROM   tablename t1
       LEFT JOIN tablename t2 ON t1.catparentid = t2.catid
WHERE  t2.cattype = 6
       AND t2.catparentid IS NULL