我很好奇是否有可能从表中获取数据并复制它但是分配了新的主键
例如,我希望获取具有“question_id”列的数据,该列充当表的唯一键,并将具有该question_id的表中的所有数据复制到同一个表但使用新的question_id。
是否有可能使用SQL?
我的数据库是一个ingres数据库
提前致谢
答案 0 :(得分:5)
当然,这样的事情应该有效:
INSERT INTO YourTable (Question_Id, OtherField,...)
SELECT SomeNewQuestionId, OtherField,...
FROM YourTable
WHERE Question_Id = SomeQuestionId
只需将SomeQuestionId
和SomeNewQuestionId
替换为适当的值。
答案 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值的新行。