使用不同的密钥将表中的数据复制到同一个表中

时间:2013-11-11 22:59:09

标签: sql ingres

我很好奇是否有可能从表中获取数据并复制它但是分配了新的主键

例如,我希望获取具有“question_id”列的数据,该列充当表的唯一键,并将具有该question_id的表中的所有数据复制到同一个表但使用新的question_id。

是否有可能使用SQL?

我的数据库是一个ingres数据库

提前致谢

3 个答案:

答案 0 :(得分:5)

当然,这样的事情应该有效:

INSERT INTO YourTable (Question_Id, OtherField,...)
SELECT SomeNewQuestionId, OtherField,...
FROM YourTable
WHERE Question_Id = SomeQuestionId

只需将SomeQuestionIdSomeNewQuestionId替换为适当的值。

答案 1 :(得分:3)

这是一个简单的选择查询。

insert into mytable
 (field2, field3, etc)
select field2, field3, etc
from mytable
where whatever.

这假设字段2和3都不是主键,并且您有自动增量表。

答案 2 :(得分:2)

快进两年.... :) 我认为这是最好和最简单的方法。使用主键从同一个表中插入一行数据将导致错误,因为主键对于每一行都是唯一的:让question_id = 100。

saveArrayToArrayList

在PostgreSQL中:

INSERT INTO MyTable SELECT * FROM MyTable Where question_id=100;

避免重复键值非常简单:

ERROR:  duplicate key value violates unique constraint "MyTable_pkey"
DETAIL:  Key (question_id)=(100) already exists.

通过使用MAX(question_id)+1,您将增加MyTable的question_id主键的最大值,然后将数据添加/复制到具有唯一question_id值的新行。