从一个 table 中选择行数据,然后使用 TableAdapter 插入另一个 table

Selecting row data from one table, then insert into another table using TableAdapter

我正在使用 TableAdapter 查询配置向导。我想 select 来自一个 table 的数据并插入到另一个 table 中,如下面的语句所示。

SELECT a.StudentID FROM [dbo].[Student] AS a WHERE [Email] = @Email;

INSERT INTO [dbo].[Registration] ([StudentID], [UniformOptionID], [Cost])
VALUES (a.StudentID, @Param1, @Param2);

当我在我的应用程序上调用该功能时,错误消息提示:

Error message: The multi-part identifier "a.StudentID" could not be bound

为什么这不可能?

INSERT INTO [dbo].[registration] 
        ([studentid], 
         [uniformoptionid], 
         [cost]) 
SELECT a.studentid, 
   @Param1, 
   @Param2 
FROM   [dbo].[student] AS a 
WHERE  [email] = @Email; 

试试这个:

INSERT INTO [dbo].[Registration] ([StudentID], [UniformOptionID], [Cost])
SELECT a.StudentID, @Param1, @Param2 FROM [dbo].[Student] AS a WHERE [Email] = @Email;

即,您可以使用 select 语句将值插入 table。 @Param1, @Param2 可以直接在 select 语句中提供。

您不能在 Insert 语句中使用 a.StudentID。您可以声明一个变量然后使用它。像这样

Declare @studentID int

SELECT @studentID=a.StudentID FROM [dbo].[Student] AS a WHERE [Email] = @Email;

INSERT INTO [dbo].[Registration] ([StudentID], [UniformOptionID], [Cost])
VALUES (@studentID, @Param1, @Param2);