网易新闻的盖楼乐趣多,某一天也想实现诸如网易新闻跟帖盖楼的功能,无奈技术不佳(基础不牢),网上搜索了资料才发现SQL查询方法有一种叫递归查询,整理如下:
一、查询出 id = 1 的所有子结点
with my1 as (select * from table where id = 1 union all select table.* from my1, table where my1.id = table.fatherId) select * from my1
结果包含1这条记录,如果不想包含,可以在最后加上:where id <> 1
二、查询出 id = 2 的所有父结点
with my1 as (select * from table where id = 2 union all select table.* from my1, table where my1.fatherId = table.id ) select * from my1;
三、删除 id = 1 的所有子结点(包括id = 1结点)
with my1 as (select * from table where id = 1 union all select table.* from my1, table where my1.id = table.fatherId ) delete from table where exists (select id from my1 where my1.id = table.id)
相关阅读 >>
sql server 分组统计并合计总数及with rollup应用
sql server中row_number函数的常见用法示例详解
sql server 开窗函数 over()代替游标的使用详解
更多相关阅读请进入《跟帖盖楼》频道 >>
![数据库系统概念 第6版](https://img.alicdn.com/i2/2212441376301/O1CN01Qk4ScQ1wPuPnp4G1s_!!0-item_pic.jpg)
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。