2010-01-19 76 views
0

我想将数据复制到新的数据库。然而,另一个表格包含在应该放置数据的过程中。在存储(插入)两个数据时从一个表中选择数据?

旧表:

DB1dbopages(ID,标题,内容)

新表(S):

DB2dboPage(id)
DB2dboContent(ID,的pageid,标题,内容)

如何从pages选择所有数据,而分割/它存储在PageContent

+3

为什么在一个查询中执行SELECT和INSERT很重要?你有没有考虑使用交易? – Dor 2010-01-19 20:50:34

+0

只是好奇...为什么你只有一张桌子只有一个ID? – 2010-01-19 20:52:13

+0

两个查询也是可能的:),如果不清楚,很抱歉。这是一次性操作... – Ropstah 2010-01-19 20:52:55

回答

1

什么是pageid?是从页面的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 

还是有点不解这个设计

+0

谢谢,这实际上是一个很好的解决方案,我的问题!要解谜:多语言网页... – Ropstah 2010-01-19 20:53:34

0

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

0

广东话U带两个独立的要求去做呢?不喜欢它:

插入db2.dbo.page 选择ID从db1.dbo.pages

和:

插入db2.dbo.content(id_page,标题,内容) 选择ID,标题,内容从db1.dbo.pages

我想这应该工作。

1

是有可能chain two inserts使用OUTPUT子句:

设置:

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; 

氏s实际上可能是有用的,因为两个插入内部是在一个语句中,因此它们被自动包含在一个隐式事务中。

+0

我很喜欢它 – Ropstah 2010-01-20 14:11:33

相关问题