(本文一切基于sql SERVER 2008 R2)
消息 8120,级别 16,状态 1,第 2 行 选择列表中的列 'SC.CNO' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
元数据库为Stu_C,含有三个表,S、SC、C。执行的语句如下:
use Stu_C select SNO,cno,sum(grade) sum_grade from SC where GRADE>=60 group by SC.SNO having count(CNO)>=4 order by sum_grade desc
目的是检索选修4门课以上课程的学生总成绩(排除不及格的),并按总成绩的降序排列出来。根据提示我们容易知道,select语句中多了cno这个属性列。如果将其去掉执 行如下:
use Stu_C select SNO,sum(grade) sum_grade from SC where GRADE>=60 group by SC.SNO having count(CNO)>=4 order by sum_grade desc
结果:
分析及结论:
一条sql语句个子句的先后作用过程:
from→where→group by→select(含聚合函数)→order by
所以当select子句中含有sum(grade) sum_grade时,最后的排序子句可以是order by sum_grade desc。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。