我想将数据复制到新的数据库。然而,另一个表格包含在应该放置数据的过程中。在存储(插入)两个数据时从一个表中选择数据?
旧表:
DB1
。dbo
。pages
(ID,标题,内容)
新表(S):
DB2
。dbo
。Page
(id)
DB2
。dbo
。Content
(ID,的pageid,标题,内容)
如何从pages
选择所有数据,而分割/它存储在Page
和Content
?
我想将数据复制到新的数据库。然而,另一个表格包含在应该放置数据的过程中。在存储(插入)两个数据时从一个表中选择数据?
旧表:
DB1
。dbo
。pages
(ID,标题,内容)
新表(S):
DB2
。dbo
。Page
(id)
DB2
。dbo
。Content
(ID,的pageid,标题,内容)
如何从pages
选择所有数据,而分割/它存储在Page
和Content
?
什么是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
还是有点不解这个设计
谢谢,这实际上是一个很好的解决方案,我的问题!要解谜:多语言网页... – Ropstah 2010-01-19 20:53:34
不可能直接。如果你的选择很贵,你可以考虑将它插入临时表中,然后插入到事务中的最终表中。
广东话U带两个独立的要求去做呢?不喜欢它:
插入db2.dbo.page 选择ID从db1.dbo.pages
和:
插入db2.dbo.content(id_page,标题,内容) 选择ID,标题,内容从db1.dbo.pages
我想这应该工作。
是有可能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实际上可能是有用的,因为两个插入内部是在一个语句中,因此它们被自动包含在一个隐式事务中。
我很喜欢它 – Ropstah 2010-01-20 14:11:33
为什么在一个查询中执行SELECT和INSERT很重要?你有没有考虑使用交易? – Dor 2010-01-19 20:50:34
只是好奇...为什么你只有一张桌子只有一个ID? – 2010-01-19 20:52:13
两个查询也是可能的:),如果不清楚,很抱歉。这是一次性操作... – Ropstah 2010-01-19 20:52:55