select 学生表.学号,姓名,avg(成绩) from 学生表,成绩表
where 学生表.学号=成绩表.学号 报错:
服务器: 消息 8118,级别 16,状态 1,行 1
列 '学生表.学号' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
服务器: 消息 8118,级别 16,状态 1,行 1
列 '学生表.姓名' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。加了group by:
select 学生表.学号,姓名,avg(成绩) from 学生表,成绩表
where 学生表.学号=成绩表.学号
group by 学生表.学号
报错:
服务器: 消息 8120,级别 16,状态 1,行 1
列 '学生表.姓名' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。问题:1、姓名 和学号 都在一个表里啊,怎么还报错?
2、是不是聚合函数都要和group by一起用?
select 学生表.学号,姓名,avg(成绩) from 学生表,成绩表
where 学生表.学号=成绩表.学号
group by 学生表.学号,姓名
2、是不是聚合函数都要和group by一起用?
不一定,看你的需求,你也可以SELECT COUNT(*) FROM YOURTABLE
where 学生表.学号=成绩表.学号
group by 学生表.学号,姓名
请问这里为什么要加姓名?
select后的列名一般要包含在group by后面,除非该列出现在一个聚集函数当中。你的姓名没有出现在聚集函数当中,自然回出错。