SQL递归查询实现跟帖盖楼效果


网易新闻的盖楼乐趣多,某一天也想实现诸如网易新闻跟帖盖楼的功能,无奈技术不佳(基础不牢),网上搜索了资料才发现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递归查询实现跟帖盖楼效果

相关阅读 >>

行转列之sql server pivot与用法详解

mysql数据库必备之条件查询语句

sql数据库删除数据如何恢复

sql创建视图的语句是什么

mysql 案例分析讲解外连接语法

sql server 2005安装配置方法图文教程 完美兼容win7所有版本

asp.net中数据库操作初步

大数据时代的数据库选择:sql还是nosql?

sql获取第一条记录的方法(sqlserver、oracle、mysql数据库)

mysql和oracle的区别小结(功能性能、选择、使用它们时的sql等对比)

更多相关阅读请进入《跟帖盖楼》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...