在SQL Server 2008中合并2个表的最佳方法

时间:2010-11-15 22:04:42

标签: sql sql-server tsql sql-server-2008

我正在尝试将两个相似的表(不完全相同)合并到一个表中。得到很多错误关于最佳方法的任何想法?

3 个答案:

答案 0 :(得分:2)

您是否考虑过:

  1. 创建一个视图,使用where子句连接两个表,限制行数,以便在设计视图时更快地执行
  2. 在视图正确后,执行“select into”,其中where条件为1 = 2。这将为您提供一个空表,其中包含视图
  3. 中的列名和数据类型
  4. 编辑表格设计以包括标识列,调整数据类型,列名称等
  5. 将视图中的数据插入表格
  6. 根据需要创建索引和FK
  7. 必要时重命名表
  8. 删除视图
  9. 小心事务日志增长

答案 1 :(得分:1)

我很困惑你标记了SQL Server 2005的问题,但你问的是2008年?如果您确实在使用2008,请尝试使用MERGE (Transact-SQL),这只适用于SQL Server 2008。

答案 2 :(得分:1)

我看到tblDVPage中没有一个Type字段来保存tblDVpagecategory.type,如果你想将后者合并到前者中,那么你可能需要为它创建一个新列,或者用tblDVPage保存tblDVpagecategory.type。的pagetype。

无论哪种方式,你最终会得到类似的东西:

INSERT INTO tblDVPage(Title, ParentId, PageType, MenuOrder)
SELECT Title, ParentId, Type, MenuOrder
FROM tblDVpagecategory

显然,tblDVpagecategory中的旧ID将消失,并在项目合并到tblDVPage时重新生成。如果您可能希望区分新列的内容,但取决于您的方案。