Sql 使用一条INSERT语句复制多条记录

Sql 使用一条INSERT语句复制多条记录,sql,ms-access,select,sql-insert,Sql,Ms Access,Select,Sql Insert,在MS Access 2019中,我想从tblTest复制现有记录,并将一个字段tLink更改为另一个表的外键 我知道如何使用VBA在记录集上循环,但我想在这里使用SQL。 我假设它可以用一个语句来解决,作为SQL新手,我渴望学习如何做到这一点 因此,让我们假设一个简单的表tblTest,tID是Primary Key和auto number tID tLink tName Long Long Text(50) -----------------------------

在MS Access 2019中,我想从
tblTest
复制现有记录,并将一个字段
tLink
更改为另一个表的外键

我知道如何使用
VBA
在记录集上循环,但我想在这里使用
SQL

我假设它可以用一个语句来解决,作为SQL新手,我渴望学习如何做到这一点

因此,让我们假设一个简单的表
tblTest
tID
Primary Key
auto number

tID    tLink    tName
Long   Long     Text(50)
-----------------------------
1       3       Bill
2      17       Sue
3       9       Tom
4       3       Chris
我想用
tLink=3
复制所有记录,并将它们的
tLink
设置为
1

当我在各种教程中四处窥探时,我学会了

INSERT INTO tblTest SELECT * FROM tblTest WHERE tID=1
。。。但由于
tID
必须是唯一的值,因此此操作失败

因此,我在这一点上卡住了,从表中删除
主键
在这里不是一个选项。有办法绕过它吗

因此,(1)如何复制一条记录而不出现
主键
问题,然后,(2)使用1
SQL
语句复制多条记录

然后,我将使用
UPDATE
tLink
设置为
1
,其中tLink=3

我想用
tLink=3
复制所有记录,并将它们的
tLink
设置为
1

如果您有一个自动编号列,那么您可以在insert语句中将其分开。Access将自动为每个插入的行分配一个新值

您需要的内容应该简单到:

INSERT INTO tblTest(tLink, tName) SELECT 1, tName FROM tblTest WHERE tLink = 3