我的SQL Server数据库中有3个表,分别为College
,University
,OldSyllabus
。
表College
具有1000行,其中包含诸如DateOfJoining
,studentName
表University
具有50行,其中包含诸如DateOfCourseRevision
,courseName
我需要编写一条插入语句,通过将OldSyllabus
表University
列与DateOfCourseRevision
表College
列进行比较来推送表DateOfJoining
中的记录
通过比较College
来将OldSyllabus
表中的所有记录插入DateOfCourseRevision <= DateOfJoining
查询:
INSERT INTO [OS].[OldSyllabus] (StudenName, Address)
VALUES
((SELECT C.Name
FROM [COL].[College] AS c
INNER JOIN [UNI].[University] AS u ON c.CourseName = u.CourseName
AND c.Date <= u.Date),
(SELECT C.Address
FROM [COL].[College] AS c
INNER JOIN [UNI].[University] AS u ON c.CourseName = u.CourseName
AND c.Date <= u.Date))
我得到一个错误:
子查询返回了多个值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。
答案 0 :(得分:2)
但是,您在这里正在混合使用INSERT ...VALUES
和INSERT...SELECT
语法。该文档提供了有关如何执行INSERT...SELECT statement: Inserting Data from Other Tables的示例。您需要在()
周围加上括号(SELECT
),并删除VALUES
子句。所以:
INSERT INTO [OS].[OldSyllabus] (StudenName) --Should that be StudentName?
SELECT C.Name
FROM [COL].[College] AS c
INNER JOIN [UNI].[University] AS u ON c.CourseName = u.CourseName
AND c.Date <= u.Date;
答案 1 :(得分:-1)
假设表oldsyllabus表已创建并且具有与College相同的列,请使用下面的查询从College表中获取数据并存储:
INSERT INTO `oldsyllabus`(`DateofJoining`, `studentName`) SELECT college.DateofJoining, college.studentName FROM college JOIN university WHERE university.dateOfCourseRevision <= college.DateofJoining;
如果尚未创建表或列,请转到: Create table (structure) from existing table 在此说明如何从现有的表创建表