我很好奇是否可以从表中获取数据并复制它但分配一个新的主键
例如,我希望获取具有“question_id”列的数据,该列充当表的唯一键,并将具有该 question_id 的表中的所有数据复制到同一个表中,但具有新的 question_id。
关于这是否可以使用 SQL 的任何想法?
我的数据库是 ingres 数据库
提前致谢
当然,这样的事情应该有效:
INSERT INTO YourTable (Question_Id, OtherField,...)
SELECT SomeNewQuestionId, OtherField,...
FROM YourTable
WHERE Question_Id = SomeQuestionId
只需将SomeQuestionId
and替换SomeNewQuestionId
为适当的值。
这是一个简单的选择查询。
insert into mytable
(field2, field3, etc)
select field2, field3, etc
from mytable
where whatever.
这假定字段 2 和 3 都不是主键,并且您有一个自动增量表。
快进两年.... :) 我认为这是最好和最简单的方法。使用主键从同一张表中插入一行数据会导致错误,因为每行的主键都是唯一的:设 question_id = 100。
INSERT INTO MyTable SELECT * FROM MyTable Where question_id=100;
在 PostgreSQL 中:
ERROR: duplicate key value violates unique constraint "MyTable_pkey"
DETAIL: Key (question_id)=(100) already exists.
避免重复键值非常简单:
INSERT INTO MyTable SELECT (SELECT MAX(question_id)+1),Column1,Column2,etc FROM MyTable Where question_id=100;
通过使用 MAX(question_id)+1,您将递增 MyTable 的 question_id 主键的最大值,然后将数据添加/复制到具有唯一 question_id 值的新行。