积极答复者
从旧表插入数据到新表的疑问

问题
答案
-
LZ说的应该是这样吧
USE [tempdb] GO --建立测试表 --新表 CREATE TABLE t ( id INT IDENTITY(1, 1) PRIMARY KEY , fatherid INT ) --旧表 CREATE TABLE tt ( orgName INT IDENTITY(1, 1) PRIMARY KEY , fullname INT ) --插入20条测试记录到旧表 INSERT INTO [dbo].[tt] SELECT 20*RAND() GO 20 --插入20条测试记录到新表 INSERT INTO [dbo].[t] SELECT 0 GO 20 SELECT * FROM [dbo].[tt] SELECT * FROM [dbo].[t] --更新新表 UPDATE [t] SET t.[fatherid] =tt.[fullname] FROM t INNER JOIN tt ON t.[id]=tt.[orgName]
- 已标记为答案 彭123 2013年12月8日 3:02
全部回复
-
不是很明白??
父节点获得ID列的值?那么旧表有什么用呢?
你的id字段是唯一并且自增的话,用update更新
LZ可以参考一下下面脚本
USE [tempdb] GO --建立测试表 CREATE TABLE tt ( id INT IDENTITY(1, 1) PRIMARY KEY , fatherid INT ) --插入20条测试记录 INSERT INTO [dbo].[tt] SELECT 0 GO 20 SELECT * FROM [dbo].[tt] --获取表的记录行数,然后循环赋值给[fatherid]列 DECLARE @ROWCOUNT INT SELECT @ROWCOUNT = COUNT(*) FROM [dbo].[tt] WHILE @ROWCOUNT > 0 BEGIN UPDATE [dbo].[tt] SET [fatherid] = [id] WHERE ID = @ROWCOUNT SET @ROWCOUNT = @ROWCOUNT - 1 END
- 已编辑 Steven.桦仔 2013年12月7日 8:49 修改回复
-
不是很明白??
父节点获得ID列的值?那么旧表有什么用呢?
你的id字段是唯一并且自增的话,用update更新
LZ可以参考一下下面脚本
USE [tempdb] GO --建立测试表 CREATE TABLE tt ( id INT IDENTITY(1, 1) PRIMARY KEY , fatherid INT ) --插入20条测试记录 INSERT INTO [dbo].[tt] SELECT 0 GO 20 SELECT * FROM [dbo].[tt] --获取表的记录行数,然后循环赋值给[fatherid]列 DECLARE @ROWCOUNT INT SELECT @ROWCOUNT = COUNT(*) FROM [dbo].[tt] WHILE @ROWCOUNT > 0 BEGIN UPDATE [dbo].[tt] SET [fatherid] = [id] WHERE ID = @ROWCOUNT SET @ROWCOUNT = @ROWCOUNT - 1 END
不好意思,没有描述清楚
我的旧表准备抛弃了,我想的是新表中用【ID】列取代PCode,然后用【父节点】列取代OrgCode列。
-
LZ说的应该是这样吧
USE [tempdb] GO --建立测试表 --新表 CREATE TABLE t ( id INT IDENTITY(1, 1) PRIMARY KEY , fatherid INT ) --旧表 CREATE TABLE tt ( orgName INT IDENTITY(1, 1) PRIMARY KEY , fullname INT ) --插入20条测试记录到旧表 INSERT INTO [dbo].[tt] SELECT 20*RAND() GO 20 --插入20条测试记录到新表 INSERT INTO [dbo].[t] SELECT 0 GO 20 SELECT * FROM [dbo].[tt] SELECT * FROM [dbo].[t] --更新新表 UPDATE [t] SET t.[fatherid] =tt.[fullname] FROM t INNER JOIN tt ON t.[id]=tt.[orgName]
- 已标记为答案 彭123 2013年12月8日 3:02