我在SQL SERVER中有Table 标题, ID 和引用。 引用表示此项目是其他项目的子菜单。
样本表:
ID |请参阅|标题
1 | 0 |菜单1
2 | 0 |菜单2
3 | 1 |子菜单1
4 | 1 |子菜单1
我需要一个查询来选择没有子菜单的项目(在本例中为菜单2)。我已经通过asp代码解决了它,它会计算子菜单并省略不需要的结果,但我需要一个纯SQL查询。
答案 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)
SELECT T1.*
FROM YOURTABLE T1 LEFT JOIN YOURTABLE T2 ON T1.ID = T2.REFER
WHERE T2.REFER IS NULL AND T1.REFER=0