我的数据库表TableA
和TableA_Stage
具有相同的列,我想根据{{TableA_Stage
中的最大值,将TableA
中的记录复制到TableA
生成主键1}}。
我尝试了这个sql并且它没有工作,因为插入了相同的主键值:
insert into tableA(col_pk, col1, col2)
select (
select max(col_pk)+1
from tableA
),
col1, col2
from tableA_Stage
我正在寻找sql语句来复制记录
答案 0 :(得分:0)
这就是你想要实现的目标。但这样做并不是一个好主意。
insert into tableA
(col_pk, col1, col2)
select (select max(col_pk) from tableA) + col_pk,
col1, col2
from tableA_Stage
答案 1 :(得分:0)
也许你应该把你的密钥生成为:
select
Coalesce((select max(col_pk) from tablea),0) + rownum
col2,
...
答案 2 :(得分:0)
您需要找到tableA
中的最大PK值与tableA_Stage
中的最小PK值之间的差异,并将该差值加1加到tableA_Stage
的PK值。您只是将tableA
的最大PK值加1,这为每一行提供相同的值。你可能想要这样的东西:
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