SQL语句复制父子级表数据

Posted 双鱼座的天蝎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句复制父子级表数据相关的知识,希望对你有一定的参考价值。

原始表Book数据如下: id为自增长整数,text为内容,pid为上级ID
id text pid
1 第一层 0
2 数学 0
3 第二层 1
4 语文 1
5 第三层 3
6 英语 3
……………………

现要求拷贝一份这样的数据到同一个表Book中,成功后的数据应该如下
id text pid
100 第一层 0
101 数学 0
102 第二层 100
103 语文 100
104 第三层 102
105 英语 102

……………………

 

--第一步:复制全部数据
Insert Into Book(text,pid) Select a.text,a.pid From Book a where 条件

--第二步:创建变量表
declare @t table(idx int,id int,pid int,id2 int,pid2 int)
Insert Into @t
select ROW_NUMBER() OVER (ORDER BY a.pid) AS idx,a.id,a.pid,b.id id2,b.pid pid2
from Book a inner join Book b on b.text=a.text and b.pid=a.pid where 条件

--第三步:修改新数据的pid
update Book set pid=c.id2
from @t a
inner join @t b on b.pid=a.id
inner join @t c on c.idx=a.idx

 


















以上是关于SQL语句复制父子级表数据的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 百万级/千万级表 总记录数查询

SQL Select 语句的用法

MySQL千万级多表关联SQL语句调优

mybatis的collection查询问题以及使用原生解决方案的结果

T-SQL高级查询语句(父子查询)

sql里面 with...as 是啥意思啊?如何使用