【发布时间】:2019-06-01 00:12:09
【问题描述】:
我的 SQL Server 数据库中有 3 个表,名为 College、University、OldSyllabus。
表College有1000行,列如DateOfJoining、studentName
表University有50行,列如DateOfCourseRevision、courseName
我需要编写一个插入语句,通过将University 表DateOfCourseRevision 列与College 表DateOfJoining 列进行比较来将记录推送到表OldSyllabus 中
通过比较DateOfCourseRevision <= DateOfJoining 将College 表中的所有记录插入OldSyllabus
查询:
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))
我收到一个错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
【问题讨论】:
-
您尝试了哪些方法,哪些方法不起作用?另外,你的问题是什么?
-
还有不明白的错误呢?与 SQL Server 中的其他一些错误相比,它是关于问题所在的更清晰和明确的错误之一。
-
也许分享您的查询会对我们这些看不到您屏幕的人有所帮助?
-
我感觉这是针对学校的,但是当您插入 StudentName 列并且值是 College 表中的名称时,似乎有些不对劲。另外,您的教授真的让您为每个表使用单独的架构吗?
-
嗨,肖恩,我刚刚编写了一个快速示例查询,它与我的原始查询完全相似,只是在架构名称上有一些错误。但除了模式之外,我其余的代码都是我正在努力解决的问题
标签: sql sql-server