查询年龄最大学生的姓名和年龄问题
问题描述
使用以下语句查询年龄最大学生的姓名和年龄的时候系统报错,为什么?要如何修改?
SELECT StName, MAX(YEAR(GETDATE())-YEAR(brithdate))
FROM StudentInfo
报错原因
由于选择列表中的列StudentInfo.StName无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
解决方案
SELECT StName,YEAR((GETDATE()))-YEAR(birthdate))
FROM StudentInfo
WHERE YEAR(Birthdate)=(SELECT MIN(YEAR(Birthdate)) FROM StudentInfo);
查询成绩最高的学生的学号问题
问题描述
使用以下语句查询成绩最高的学生的学号时系统报错,为什么?如何修改
SELECT StID
FROM StudentInfo
WHERE Score=MAX(Score)
报错原因
报错原因是由于Score=MAX(Score)聚合不应出现在 WHERE 子句中
解决方案
SELECT StID
FROM StudentInfo
WHERE Score=(SELECT MAX(Score) FROM StudentInfo);