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

时间:2023-03-09 07:22:02
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递归查询实现跟帖盖楼效果