id parentid
1 0
2 0
3 0
4 1
5 2
如格式如上,
要求不太好解释,总之需要筛选出ID为4、5、3的项目。
因为ID4,5有父项目分别为ID1,2所以ID1,2不显示
而ID3无子项目,所以列出来求SQL语句,请注意平台是mysql

解决方案 »

  1.   

    这里是MSSQL 板块呀,建议转到MYSQL板块。
      

  2.   

    没找到mssql板块,不过mysql跟mssql语句基本不都通用的吗?
      

  3.   


    create table tb(id int,parentid int)
    insert into tb values(1 ,0)
    insert into tb values(2 ,0)
    insert into tb values(3 ,0)
    insert into tb values(4 ,1)
    insert into tb values(5 ,2)
    goselect * from tb t
    where exists(select 1 from tb m where t.parentid = m.id)
    or
    not exists(select 1 from tb n where t.id = n.parentid)drop table tb/*
    id          parentid    
    ----------- ----------- 
    3           0
    4           1
    5           2(所影响的行数为 3 行)
    */
      

  4.   

    create table tb(id int,parentid int)
    insert into tb values(1 ,0)
    insert into tb values(2 ,0)
    insert into tb values(3 ,0)
    insert into tb values(4 ,1)
    insert into tb values(5 ,2)
    goselect t.* from tb t
    where exists(select 1 from tb m where t.parentid = m.id)
    or
    not exists(select 1 from tb n where t.id = n.parentid)drop table tb/*
    id          parentid    
    ----------- ----------- 
    3           0
    4           1
    5           2(所影响的行数为 3 行)
    */
      

  5.   

    select * from test where id not in ( select t1.id from test t1 join test t2 on t1.id = t2.parentid )