数据库查询,如图。从sctab选课表中查询1.成绩最高的学生信息(连接其他表显示学生姓名、教师、以及课程名。)2.原题目不变,加入条件查询课程名为“程序设计”的最成绩的学生信息。
疑问:
1、【为什么第二种方法查询不出来呢?只是把成绩都显示出来了?GROUP HAVING和第一种方法有什么区别呢?】2、【用一种正确的方法,加入条件ctab.kcm='程序设计'(写在Where或者having里都查询不出来任何结果)把排序的Group Having 去掉可以查询出来。添加的条件与分组查询有冲突吗?这题应该怎么写才好?尽可能不用临时表与视图】

------解决思路----------------------
因为你 SELECT 和 GROUP BY 是一样的字段,每条原始记录都是一个分组等于不加分组。
MAX(cj) 是在当前分组中求最大,每条原始记录都求一次最大,等于还是原先的cj。
1.成绩最高的学生信息
SELECT TOP 1 ...
FROM ...
WHERE ...
ORDER BY sctab.cj DESC
-- 不用 GROUP BY、HAVING,只要排序后取 TOP 1
2.查询课程名为“程序设计”的最高成绩的学生信息
SELECT TOP 1 ...
FROM ...
WHERE ...
AND ctab.kcm = '程序设计'
ORDER BY sctab.cj DESC
-- 在第一个查询上加个条件即可