◆求一SQL语句
有两张表:   
 表一(fatherid为0时为大类,不为零时就是大类的ID号,如计算机系的Fatherid为100,则是属于ID为“100”理工学院的子类.   
 id            fatherid      name 
 100                  0                  理工学院 
 101               100               计算机系 
 102               100               机电工程系 
 103               100               生物工程系 
 104                  0                  人文学院 
 105               104               音乐系 
 106               104               法律系 
 .................... 
 ....................   
 表二的sortid号则是根据表一的ID号得到的,如张三的srotid为101 
 则说明,张三是表一中ID号为101的计算机系.   
 表二 
 id               sortid               name 
 1                     101                     张三 
 2                     101                     李四 
 3                     101                     王五 
 4                     102                     刘六     
 现在需要用一个SQL语句,求出如下结果:(因为表一中id为101、102,在表二中都有相关的数据,所以要显示出来,反之则不要显示) 
 id            fatherid      name 
 100                  0                  理工学院 
 101               100               计算机系 
 102               100               机电工程系     
 谢谢各位。。   
------解决方案--------------------select * from 表一 a where exists(select 1 from 表二 where a.id=id )
------解决方案--------------------select * from 表一 where id in(select distinct id from 表二) union all select * from 表一 where fatherid = 0
------解决方案--------------------select id,fatherid,name from table1  
 where  id in (select distinct sortid from table2 union all select fatherid from table1 where id in (select distinct sortid from table2))
------解决方案--------------------第一条语句好象不是你要的结果吧? 
 exists:  存在的关系  它不返回结果集,只返回TRUE FALSE
------解决方案--------------------exists 存在! 
 比如: 
 select a.* from a,b 
 where a.pkid = b.pkid   
 可以用下面来替代: 
 select * from a 
 where exists(select  ' ' from b where a.pikid = b.pkid)   
 用exists有时的效率会比连接高。