Mysql只从表树中选择子项

时间:2017-04-01 16:24:56

标签: mysql parent-child

我有一个表名tbl_section这个表就像那个

db_secid   db_secname   db_secdesc    db_parent
1          Electrical                 NULL
2          Mechanical                 NULL
3          Plumbing                   NULL
4          Cables                      1
5          Lamps                       1
6          HDMI                        4

我想只选择db_parent=NULL行的子项。从上表中可以看出结果只有CablesLamps

我尝试使用此查询

select 
s1.db_secname 
from tbl_section as s1
LEFT JOIN tbl_section as s2
ON 
s1.db_secid=s2.db_parent
WHERE s2.db_parent IS NULL

但是这个查询给了我一个结果,我不希望这个结果来自这个查询

Mechanical,Plumbing,Lamps,HDMI 

如何解决此问题,并且只有父母拥有db_parent = NULL的孩子?

2 个答案:

答案 0 :(得分:2)

只需执行B ,这已经过滤掉没有父的行。此外,您还交换了您的亲子关系:它应该是class ChildOfA extends A implements B {} A a = new ChildOfA(); System.out.println(a instanceof B); // fine. ,而不是JOIN

s1.db_parent = s2.db_secid

答案 1 :(得分:2)

你可以使用内连接

select t1.db_secname
from tbl_section as t1
inner join tbl_section as t2 
      on t2.db_parent is null and t2.db_secid = t1.db_parent