如何从另一个表插入行并同时更新?

时间:2014-07-24 21:19:51

标签: sql oracle

表A:

A|B|C|Version

1|2|3|1

1|2|3|2

我想要表B

A|B|C|Version

1|2|3|2

每行与A相同,但版本增加1。 让我们说我只想复制表A中版本= 1的行。 我该怎么做?

2 个答案:

答案 0 :(得分:0)

insert into用于“复制”+ Where clause,仅用于复制一个版本。

INSERT INTO tableB ( A, B, C, Version) VALUES
    (SELECT * FROM tableA WHERE tableA.Version = 1);

答案 1 :(得分:0)

INSERT INTO b( a, b, c, version )
  SELECT a, b, c, version + 1
    FROM a
   WHERE version = 1

会奏效。当然,由于您的WHERE条款仅限于version = 1的行,您可以在SELECT

中使用硬编码2
INSERT INTO b( a, b, c, version )
  SELECT a, b, c, 2
    FROM a
   WHERE version = 1