本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 3078|回复: 1
打印 上一主题 下一主题

mySql 插入子母数据

[复制链接]
跳转到指定楼层
1#
发表于 2013-7-30 09:59:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   现在有一个需求,需要复制数据库中的数据,但是存在子母关系,哪位大虾给点意见呀!!!

比如:  有数据   atuoID         parentID        Name  其中 autoID自动生成
                            4b5c                                  母
                            44cc             4b5c              一级子
                             55cc             4b5c           一级子
                            66vv             55cc           二级子
                             33bn            66vv           三级子

现在要复制相同 关系的另一批数据????
ChinaGDG.com
回复

使用道具 举报

2#
 楼主| 发表于 2013-7-30 10:42:12 | 只看该作者
CREATE TABLE TreeShip(
  [ID] uniqueidentifier PRIMARY KEY NOT NULL,
  [Name] [nvarchar](50) NULL,
  [Remark] [nvarchar](500) NULL,
  [ParentID] uniqueidentifier not null
)

GO

INSERT INTO TreeShip(ID,Name,Remark,ParentID) values ('47B9AF56-32D8-4561-8096-15D832C47B26','上海一中','源数据','00000000-0000-0000-0000-000000000000')
INSERT INTO TreeShip(ID,Name,Remark,ParentID) values ('64F41586-449A-464B-BB48-FF13FBC492BC','上海二中','源数据','00000000-0000-0000-0000-000000000000')
INSERT INTO TreeShip(ID,Name,Remark,ParentID) values (newid(),'上海三中','源数据','00000000-0000-0000-0000-000000000000')

INSERT INTO TreeShip(ID,Name,Remark,ParentID) values (newid(),'上海一中一班','源数据','47B9AF56-32D8-4561-8096-15D832C47B26')
INSERT INTO TreeShip(ID,Name,Remark,ParentID) values (newid(),'上海一中二班','源数据','47B9AF56-32D8-4561-8096-15D832C47B26')
INSERT INTO TreeShip(ID,Name,Remark,ParentID) values (newid(),'上海一中三班','源数据','47B9AF56-32D8-4561-8096-15D832C47B26')
INSERT INTO TreeShip(ID,Name,Remark,ParentID) values (newid(),'上海二中一班','源数据','64F41586-449A-464B-BB48-FF13FBC492BC')
INSERT INTO TreeShip(ID,Name,Remark,ParentID) values (newid(),'上海二中二班','源数据','64F41586-449A-464B-BB48-FF13FBC492BC')

GO

DECLARE @TreeType nvarchar(20)
SET @TreeType = '新数据'
BEGIN
  --创建一个临时表,记录ID的变化
SELECT ID AS FromID,newid() AS ToID INTO #TEMP FROM TreeShip WHERE Remark ='源数据'
  --插入相应的数据
INSERT INTO TreeShip(ID,Name,Remark,ParentID)
  SELECT M1.ToID,A.Name,@TreeType,ISNULL(M2.ToID,'00000000-0000-0000-0000-000000000000')
  FROM TreeShip A
  INNER JOIN #TEMP M1 ON A.ID = M1.FromID
  LEFT JOIN #TEMP M2 ON A.ParentID = M2.FromID
  
  DROP TABLE #TEMP
END

GO

SELECT * FROM TreeShip  ORDER BY REMARK ,PARENTID,NAME
ChinaGDG.com
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表