假设现有表:类别  代码  名称  父类
00A0  001   学历  NULL
00A0  0011  大学  001
00A0  0012  大专  00100B0  002   性别  Null
00B0  0021  男    002
00B0  0022  女    00200C0  1001  中共  NULL
00C0  1002  团员  NULL
00C0  1003  群众  NULL
00C0  1004  无    NULL
.....
现在我需要挑选中只包含有子类别的类别名称,这个也不知道怎么描述比较好
比如说,我只挑选出00A0 AAB0之类的类别名称,不挑选00C0这种类型的类别名。
该如何实现呢。

解决方案 »

  1.   

    select distinct  类别 from tb 
    where 父类 is not null
      

  2.   

    select * from tb a
    where exists (select 1 from tb b where a.类别=b.类别 and b.父类 is not null)
      

  3.   

    select distinct  类别 from tb 
    where 父类 is not null
      

  4.   

    SELECT DISTINCT 类别
    FROM TB A
    WHERE 父类 IS NULL
    AND EXISTS
    (
    SELECT 1
    FROM TB B
    WHERE B.父类 = A.类别
    )
      

  5.   

    SELECT DISTINCT 类别
    FROM TB A
    WHERE 父类 IS NULL
    AND EXISTS
    (
    SELECT 1
    FROM TB B
    WHERE B.父类 = A.类别
    )