我尝试根据CurrentLevel
从FSB_ProcessStudents
表格更新Students
表StudentId
上的UPDATE FSB_ProcessStudents SET Currentlevel =
(SELECT
s.LevelId
From FSB_Students s
INNER JOIN FSB_ProcessStudents ps
ON ps.StudentId = s.StudentId)
这是我的陈述
No EMPLOYEE records for DEPTNO = [40]
在执行时它给了我错误:
子查询返回的值超过1。
我哪里出错?
答案 0 :(得分:5)
Sql server支持在update语句中使用连接,因此您可以像这样编写更新语句:
UPDATE ps
SET Currentlevel = s.LevelId
FROM FSB_Students s
INNER JOIN FSB_ProcessStudents ps
ON ps.StudentId = s.StudentId
答案 1 :(得分:1)
尝试以下查询
UPDATE ps
SET ps.Currentlevel = s.LevelId
FROM FSB_ProcessStudents ps
INNER JOIN FSB_Students s on s.StudentId = ps.StudentId
答案 2 :(得分:1)
使用以下查询进行更新:
UPDATE FSB_ProcessStudents SET Currentlevel = LevelId
FROM FSB_Students S
WHERE FSB_ProcessStudents.StudentId = s.StudentId
答案 3 :(得分:0)
您遇到此问题是因为您的子查询返回多个值,并且无法通过单个update语句更新多个值。
所以使用如下所示的顶级关键字,它将被解析
UPDATE FSB_ProcessStudents SET Currentlevel =
(SELECT top 1
s.LevelId
From FSB_Students s
INNER JOIN FSB_ProcessStudents ps
ON ps.StudentId = s.StudentId order by ps.StudentId desc)
答案 4 :(得分:0)
错误不言自明。您的子查询应该只返回一个值。
试试这个:
UPDATE FSB_ProcessStudents SET Currentlevel =
(SELECT TOP 1
s.LevelId
From FSB_Students s
INNER JOIN FSB_ProcessStudents ps
ON ps.StudentId = s.StudentId)
或者,请确保添加其他条件以返回一个或不返回值。