判断某记录树的表有无子节点

p2227 2010-11-10 03:41:58
DECLARE @A TABLE (id int,name char,pid int)

INSERT INTO @A(id,name,pid)
SELECT 1,'r',0 UNION ALL
SELECT 2,'r',0 UNION ALL
SELECT 3,'c',1

select * from @A



用什么语句可以查找出这样一个结果
id name haschild
1 r 1
2 r 0
3 c 0
...全文
142 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2010-11-10
  • 打赏
  • 举报
回复
;with f as
(
select * from tb where name='r'
union all
select a.* from tb a, f where a.pid=f.id
)
select * from f
dawugui 2010-11-10
  • 打赏
  • 举报
回复
DECLARE @A TABLE (id int,name char,pid int)

INSERT INTO @A(id,name,pid)
SELECT 1,'r',0 UNION ALL
SELECT 2,'r',0 UNION ALL
SELECT 3,'c',1

select * , haschild = (select count(1) from @a where pid = t.id) from @A t

/*
id name pid haschild
----------- ---- ----------- -----------
1 r 0 1
2 r 0 0
3 c 1 0

(所影响的行数为 3 行)
*/
Vidor 2010-11-10
  • 打赏
  • 举报
回复
DECLARE @A TABLE (id int,name char,pid int)

INSERT INTO @A(id,name,pid)
SELECT 1,'r',0 UNION ALL
SELECT 2,'r',0 UNION ALL
SELECT 3,'c',1

select *, case when exists(select 1 from @A where pid=t.id) then 1 else 0 end from @A t
p2227 2010-11-10
  • 打赏
  • 举报
回复
只需要判断有无子节点就可以了,有多少个不需要判断

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧