存储(插入)两个表时从一个表中选择数据?

时间:2010-01-19 20:47:30

标签: sql sql-server

我想将数据复制到新数据库。但是,在应该放置数据的过程中包括另一个表。

旧表:

  

DB1dbopages(id,title,content)

新表:

  

DB2dboPage(id)
  DB2dboContent(id,pageid,title,content)

如何在pages Page中分割/存储来自Content的所有数据?

4 个答案:

答案 0 :(得分:1)

什么是pageid?是来自Page?

的id

如果是这样,并且这假定内容表中的id是标识

insert into DB2.dbo.Page (id)
select id from DB1.dbo.pages

insert into DB2.dbo.Content(pageid, title, content)
select id, title, content from DB1.dbo.pages

这个设计仍然有点困惑

答案 1 :(得分:1)

是的,可以使用OUTPUT子句chain two inserts

设置:

create table Page (id int )
create table Content (id int , pageid int, title varchar(100), content varchar(max))

create table pages (id int, title varchar(100), content varchar(max))

insert into pages values (1, 'Lorem', 'Ipsum');
insert into pages values (2, 'eum', 'aliquam vivendo placerat ad');

实际插入:

insert into Content (id, pageid, title, content)
output inserted.pageid into Page(id)
select id, id, title, content from pages;

证明:

select * from Page;
select * from Content;

这实际上很有用,因为这两个插入位于单个语句中,因此它们会自动包含在隐式事务中。

答案 2 :(得分:0)

不可能直接。如果您的选择很昂贵,您可以考虑将其插入临时表中,然后插入到事务内的最终表中。

答案 3 :(得分:0)

你可以用两个单独的请求吗?这样做:

插入db2.dbo.page       从db1.dbo.pages

中选择id

插入db2.dbo.content(id_page,title,content)        从db1.dbo.pages

中选择id,title,content

我想这应该可行。