将DB表拆分为两个表

时间:2014-10-23 14:58:09

标签: sql sql-server-2012

我需要拿一张包含origArticleTable的{​​{1}}表并将其拆分为两个表。我需要两个表,因为我必须包含来自其他来源的数据,这些数据不包含所有相同的内容。例如,另一个来源将有一个包含Title,date1, date2,author, articleText, hasVideo, hasImage, ArticleID的表。

基本上我正在将title, itemDescription, date1, urlLink, comments, uniqueID移动到“复合”表和元表或支持表中,为此,我所遇到的问题是“当我插入origArticleTable时,可以我使用插入到CompositeTable生成的标识填充ArticleMeta的另一个插入嵌套或其他东西“

我会在这里分解它们:

CompositeTable

我不确定如何做的是将当前表中的数据插入到这两个表中。如果compositeTable ID (auto-incrementing identity column) Title date1 TextContent ArticleMeta compositeID ArticleID hasVideo hasImage author date2 中没有相应的条目,我无法将数据放入ArticleMeta。我了解我会在CompositeTable中插入一个项目并使用CompositeTable将其余信息插入ID

我尝试使用联接设计一个ArticleMeta语句,将insert-selectorigArticleTable合并到一个插入CompositeTable但是在构建任何偶数内容方面都没有成功看起来它会起作用。

非常感谢任何帮助。如果有什么需要更好的解释或任何事情让我知道。

编辑---- 这是我试图使用的CompositeTable混乱。它从我开始就改变了。

insert-select

1 个答案:

答案 0 :(得分:1)

如果title是原始表中的唯一键,则执行以下操作。如果原始表中的唯一键不在新表中,则暂时添加,然后将其删除。

DECLARE @T1 TABLE (Title varchar(50), NewID int)
INSERT INTO compositeTable (Title, date1, TextContent)
OUTPUT inserted.Title, Inserted.ID INTO @T1
SELECT compositeTable (Title, date1, TextContent)
FROM origArticleTable 


insert into ArticleMeta (compositeID, ArticleID, hasVideo, hasImage, author, date2)
SELECT T1.ID, o.compositeID, o.ArticleID, o.hasVideo, o.hasImage, o.author, o.date2
FROM @T1 T1 
INNER JOIN origArticleTable o ON T1.Title = o.Title