-1

我有两个表tab1tab2(具有相同的架构)驻留在不同的数据库中。这些表有一个主键列aud_ID,其值可以相似。

请注意主键列aud_ID不是标识列。

我的任务是将两个表的数据合并到第三个表中tab3(具有相同的架构)。这里的挑战是重新编号 的主键列值tab3

  1. 先将的主键列tab1复制到tab3,然后tab2将数据插入到tab3开始的最大值中tab1.aud_id

    或者

  2. 主键列aud_id从 1 开始重新编号。

知道如何实现这一目标吗?

问候,普拉尚特..

4

2 回答 2

2

如果aud_id值是数字(并且您不需要避免空白),您可以这样做:

insert into tab3 (/* Columns */)
select (aud_id *2)-1,/* Other Columns */ from tab1
union all
select (aud_id *2),/* Other Columns */ from tab2

这样,您可以保证生成唯一值,而无需检查任一表。通过保持公式化,如果需要,您可以使用它来复制其他表中的引用。

于 2012-07-09T13:25:18.440 回答
1

假设您不需要保留任何现有aud_ID值:

INSERT dbo.tab3(aud_ID, other cols)
SELECT aud_ID = ROW_NUMBER() OVER (ORDER BY aud_ID), other cols
FROM
(
  SELECT aud_ID, other cols FROM dbo.tab1
  UNION ALL
  SELECT aud_ID, other cols FROM dbo.tab2
) AS x;
于 2012-07-09T13:27:07.520 回答