SQL如何查询孤立节点

下图右侧关系节点号,左边是根据节点关系连接的节点图,我想直接sql查询出孤立的节点号(圈红的)

image.png

吃肉不长肉 发布于 2020-3-16 09:42
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
北纬六十六度Lv4初级互助
发布于2020-3-16 10:01

select * from 表  where 节点1 is nul  and 节点1 not in(select 节点2 from 表)

union

select * from 表  where 节点2 is nul  and 节点2 not in(select 节点1 from 表)



效率应该不怎么样,我感觉这样能查出来,也没试过,你试试看

  • 吃肉不长肉 吃肉不长肉(提问者) 不对啊
    2020-03-16 11:21 
  • 北纬六十六度 北纬六十六度 回复 吃肉不长肉(提问者) 哦 想简单了,应该先查询出节点1不为空,并且节点2为空的节点1,然后这个节点1 不在节点2里 select * from into #a 表 where 节点1 is not nul and 节点2 is null select * from #a where 节点1 not in(select 节点2 from 表)
    2020-03-16 12:03 
  • 吃肉不长肉 吃肉不长肉(提问者) 回复 北纬六十六度 逻辑是这样的,但如果遇到有几个节点连接在一起,但没有连到主网上的也算孤立节点,该怎么查啊
    2020-03-17 09:27 
  • 北纬六十六度 北纬六十六度 回复 吃肉不长肉(提问者) 这样得节点就不能这样判定了,上面得算法也不对,应该是确定最上级主节点A,增加判定函数,判定一个节点是否能到达A。不能到达就是孤立节点,设定变量@节点 ,判定 下级节点有没有到A,select 节点2 from 表 where 节点1=@节点 如果节点2<>A 则 节点2复制给变量节点@节点, @节点=节点2 这里用循环 一直找到 最后节点2是空,如果最后是空都没有找到A,则下级节点没有A。同理找上级节点A,select 节点1 from 表 where 节点2=@节点
    2020-03-18 08:43 
  • 吃肉不长肉 吃肉不长肉(提问者) 回复 北纬六十六度 en,我用遍历自己查出来了
    2020-03-20 14:44 
  • 2关注人数
  • 445浏览人数
  • 最后回答于:2020-3-16 10:01
    请选择关闭问题的原因
    确定 取消
    返回顶部