0

我有数据库表TableA并且TableA_Stage具有相同的列,我想将记录复制TableA_StageTableA基于TableA.

我尝试了这个 sql,但它不起作用,因为插入了相同的主键值:

insert into tableA(col_pk, col1, col2)
  select (
          select max(col_pk)+1 
            from tableA
          ),
         col1, col2
   from tableA_Stage

我正在寻找 sql 语句来复制记录

4

3 回答 3

0

也许您应该将密钥生成为:

select
  Coalesce((select max(col_pk) from tablea),0) + rownum
  col2,
  ...
于 2013-10-10T18:08:32.070 回答
0

这就是您想要实现的目标。但这样做并不是一个好主意。

insert into tableA
(col_pk, col1, col2)
select (select max(col_pk) from tableA) + col_pk,
       col1, col2
from tableA_Stage
于 2013-10-10T17:56:20.010 回答
0

您需要找到最大 PK 值tableA和最小 PK 值之间的差值tableA_Stage,并将该差值加上 1 到 PK 值tableA_Stage。您只需将 1 的最大 PK 值加 1 tableA,这将为每一行提供相同的值。你可能想要这样的东西:

insert into tableA(col_pk, col1, col2)
  select (
          (select max(col_pk) from tableA) - (select min(col_pk) from tableA_Stage) + 1 + col_pk
          ),
         col1, col2
   from tableA_Stage
于 2013-10-10T21:02:11.413 回答