-1

異なるデータベースに存在する2 つのテーブルtab1tab2(同一のスキーマを持つ) があります。これらのテーブルには、aud_ID値が似ている主キー列があります。

aud_ID主キー列は ID 列ではないことに注意してください。

2 つのテーブルのデータを 3 番目のテーブルtab3(同一のスキーマ) にマージするタスクがあります。ここでの課題は、 の主キー列の値を再番号付けすることですtab3

  1. の主キー列がtab1最初にコピーされtab3、次にデータがの最大値の先頭tab2に挿入されます。tab3tab1.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 に答える