我有两个模式S1和S2具有相同的表结构。我将从示例开始:
在S1.table1上我有:
ID DATA1 DATA2 ---- ---------- ---------- 01 data1 test1 02 data1 test1
在S2.table1上我有:
ID DATA1 DATA2 ---- ---------- ---------- 01 data2 test2 02 data2 test2
是否可以选择一行(来自S1.table1)更新它(更改ID列的值)并将其插入到S2.table1?我想编写单个SQL查询,这将是用作准备语句(Java)。
S2的最终结果应为:
ID DATA1 DATA2 ---- ---------- ---------- 01 data2 test2 02 data2 test2 03 data1 test1
所以我从S1.table1插入了第一行,并且只更改了ID。
谢谢, 纳斯
答案 0 :(得分:2)
怎么样
INSERT INTO S2
SELECT 03, DATA1, DATA2 FROM S1 WHERE ID=01
也就是说,您只需选择所需的数据,但明确指出任何替换数据。
答案 1 :(得分:1)
INSERT INTO S2 (Data1, Data2) SELECT Data1, Data2 FROM S1 WHERE ID=xxx
假设S2中的ID是自动递增(例如通过序列和触发器)。
答案 2 :(得分:1)
您必须使用序列:
insert into s2.table1
select seq.next_val, data1, data2
from s1.table1
序列总是会计数。因此,当您再次运行时,新行将“附加”到现有行。
答案 3 :(得分:0)
insert into s2.table1 (
select id+1, data1, data2
from s1.table1
where id=(select max(id) from s1.table1)
);