SQL选择菜单没有子菜单

时间:2015-10-03 00:56:37

标签: sql sql-server select

我在SQL SERVER中有Table 标题 ID 引用引用表示此项目是其他项目的子菜单。

样本表:

ID |请参阅|标题

1 | 0 |菜单1

2 | 0 |菜单2

3 | 1 |子菜单1

4 | 1 |子菜单1

我需要一个查询来选择没有子菜单的项目(在本例中为菜单2)。我已经通过asp代码解决了它,它会计算子菜单并省略不需要的结果,但我需要一个纯SQL查询

2 个答案:

答案 0 :(得分:1)

此查询为您提供所有没有子项的项目:

select t1.ID, t1.Refer, t1.Title
from MyTable t1
left join MyTable t2 on t1.ID = t2.Refer
where t2.Refer is null

如果您只想要顶级项目,则下面的查询应该这样做:

select t1.ID, t1.Refer, t1.Title
from MyTable t1
left join MyTable t2 on t1.ID = t2.Refer
left join MyTable t3 on t3.ID = t1.Refer
where t2.Refer is null
    and t3.ID is null

答案 1 :(得分:1)

SQL Fiddle Demo

SELECT T1.*
FROM YOURTABLE T1 LEFT JOIN YOURTABLE T2 ON T1.ID = T2.REFER
WHERE T2.REFER IS NULL AND T1.REFER=0