加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver 递归查询

发布时间:2020-12-12 13:43:03 所属栏目:MsSql教程 来源:网络整理
导读:有如下数据表 ? ? 假如我们要查询ID为003的数据的所有子节点我们可以使用CTE 递归查询完成... ? [sql] ? view plain ?copy ?print ? if?OBJECT_ID( 'tb' , 'N' )? is ? not ? null ?? ? drop ? table ?tb;?? ?? ?? create ? table ?tb(id? varchar (3)?,?pid

有如下数据表

?

?

假如我们要查询ID为003的数据的所有子节点我们可以使用CTE 递归查询完成...

?

[sql]? view plain ?copy ?print ?
  1. if?OBJECT_ID('tb','N')?is?not?null??
  2. ?drop?table?tb;??
  3. ??
  4. ??
  5. create?table?tb(id?varchar(3)?,?pid?name?varchar(10));??
  6. insert?into?tb?values('001'?,?null?,?'广东省');??
  7. values('002'?,?'001'?,?'广州市');???
  8. values('003'?,?'深圳市')?;??
  9. values('004'?,?'002'?,?'天河区')?;??
  10. values('005'?,?'003'?,?'罗湖区');??
  11. values('006'?,?'福田区')?;??
  12. values('007'?,?'宝安区')?;??
  13. values('008'?,?'007'?,?'西乡镇')?;??
  14. values('009'?,?'龙华镇');??
  15. values('010'?,?'松岗镇');??
  16. select?*?from?tb;??
  17. ?with?cte?as??
  18. ?(??
  19. select?a.id,a.name,a.pid?from?tb?a?where?id='003'??
  20. union?all???
  21. select?k.id,k.from?tb?k?inner?join?cte?c?on?c.id?=?k.pid??
  22. ?)from?cte??
查询结果如下: 003?深圳市?001 005?罗湖区?003 006?福田区?003 007?宝安区?003 008?西乡镇?007 009?龙华镇?007 010?松岗镇?007

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读