题如图 为什么这样写代码得不出查询结果呢?改成用top限定的话就可以
你这个查询语句中,子查询返回的结果是最大成绩,但它没有与外部查询中的学生进行连接。因此,外部查询返回的是所有选了“数据结构”课程的学生的信息,而不是具有最高成绩的学生信息。
通过使用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'
)
-- top
select top 2 * from emp
select top 20 percent * from emp -- 输出前20%(小数会加一)
-- 工资1500到3000之间的前四个输出
select top 4 * from emp
where sal between 1500 and 3000
order by sal desc