sql server子查询

题如图 为什么这样写代码得不出查询结果呢?改成用top限定的话就可以

img

你这个查询语句中,子查询返回的结果是最大成绩,但它没有与外部查询中的学生进行连接。因此,外部查询返回的是所有选了“数据结构”课程的学生的信息,而不是具有最高成绩的学生信息。

通过使用TOP或LIMIT子句,你可以限制结果集大小,并在结果集中选择具有最高成绩的学生。
这样就会使用top限制会返回具有最高成绩的学生的信息。

你可以运行一下我这个SQL查询一下本地数据:

SELECT s.sname, s.sdept, s.ssex, sc.grade
FROM student s 
JOIN sc ON s.sno = sc.sno
JOIN course c ON c.cno = sc.cno
WHERE c.cname = '数据结构'
AND sc.grade = (
    SELECT MAX(sc1.grade) 
    FROM sc sc1
    JOIN course c1 ON c1.cno = sc1.cno
    WHERE c1.cname = 'aaa'
)