SQL Server:使用其他数据将数据移动到另一个表

时间:2015-09-01 07:18:43

标签: c# sql-server

我有一个包含6000个成员数据的表。我需要该表中的一些特定数据。我可以将它移到我的桌子上,但它有点复杂。 我的新成员系统的工作方式就像,当一个成员注册时,会给这个成员一个唯一的6-8位数id /令牌,并创建另外两个包含该成员令牌的表。

我的意思是第一张桌子就像,

[inID][stMail][stPass][stToken]  .. etc

此令牌是我另一张表的关键

[stToken][stName][stSurname][stAdress][stPhone]...etc..

当我将这些数据移动到我的表格时,我需要创建另外两个表格,这些表格与原始表格具有相同的标记。

所以它看起来像

[1][mail][pass][123123]

[123123][name][surname][address][phone]

我怎样才能在SQL或asp.net C#中做到这一点?

我尝试从旧表中选择所有数据,取出我需要的字符串值并写下我的新表,但是8小时后它只写出200个成员的奇数数据。

对不起我有趣的英语。

1 个答案:

答案 0 :(得分:0)

您可以尝试如下。在这种情况下,我假设你有一个生成token string的逻辑。现在我只需用row_number()值替换该标记。此方法使用临时表。

-- create a #temp table
create table #temp
(
  [inID] int, 
  [stMail] varchar(20),
  [stPass] varchar(20),
  [stToken] varchar(20),
  [stName] varchar(20),
  [stSurname] varchar(20),
  [stAdress] varchar(20),
  [stPhone] varchar(20)
)
--insert values in #temp table
insert into #temp
select
  [inID]     ,
  [stMail]   ,
  [stPass]   ,
  row_number() over (order by inID,stMail) as [stToken]  ,
  [stName]   ,
  [stSurname],
  [stAdress] ,
  [stPhone]  
 from t

--copy from #temp table into t1 and t2 tables
 insert into t1
 select 
  [inID]     ,
  [stMail]   ,
  [stPass]   ,
  [stToken]  
 from #temp

 insert into t2
 select 
  [stToken]  ,
  [stName]   ,
  [stSurname],
  [stAdress] ,
  [stPhone]  
 from #temp

--don't forget to drop the #temp table
 drop table #temp

在这里查看demo sql fiddle链接:http://sqlfiddle.com/#!3/185eb/4