是否可以使用来自多个表的数据执行INSERT INTO SELECT语句?

问题描述 投票:1回答:1

问题如上。我目前使用的SQL代码如下:

"INSERT INTO [tblClasses/Students] (StudentID, ClassID) " & _
"SELECT StudentID FROM tblStudent WHERE Username = @StudentUser " & _
"SELECT ClassID FROM tblClasses WHERE ClassName = @ClassName ;"

当我尝试运行此查询时,收到以下错误消息:

'查询值和目标字段的数量不一样'

显然,我使用的方法不起作用,所以有人知道编写查询的正确方法吗?

sql vb.net ms-access
1个回答
1
投票

您需要一个SELECT .. FROM ..语句作为源。通常您使用JOIN,但如果表格不相关,请使用笛卡尔积。

INSERT INTO [tblClasses/Students] (StudentID, ClassID)
SELECT tblStudent.StudentID, tblClasses.ClassID 
FROM tblStudent, tblClasses 
WHERE tblStudent.Username = @StudentUser 
  AND tblClasses.ClassName = @ClassName 

不确定这是否会创建重复记录。如有必要,请使用SELECT DISTINCT

How to use SQL parameters in VB.Net


要在Access中测试查询,请使用[StudentUser][ClassName]作为参数,并在要求时提供值。

出于某种原因,除非明确指定为参数,否则Access会跳过[ClassName]。用这个:

PARAMETERS StudentUser Text ( 255 ), ClassName Text ( 255 );
INSERT INTO [tblClasses/Students] ( StudentID, ClassID )
SELECT tblStudent.StudentID, tblClasses.ClassID
FROM tblStudent, tblClasses
WHERE tblStudent.Username = [StudentUser] 
  AND tblClasses.ClassName = [ClassName];
© www.soinside.com 2019 - 2024. All rights reserved.