GROUP BY 语句

group by可以将数据集按照某个字段划分为不同的组,可以在group by的基础上加以利用count、sum、max、min等聚合函数在组上进行数据处理

select name,sum(source) from test.student group by id;  -- 查询每个人的姓名及总成绩

group by id就是按学号进行分组,sum(source)就是显示每一组的总成绩(即每个学号对应的成绩)

HAVING 语句

having经常与group by语句连用,用于过滤group by语句返回的数据集。弥补了聚合函数不能与where关键词连用的缺陷。

select name,sum(source) from test.student group by id having sum(source)>230; -- 查询总成绩超过230的学生姓名及总成绩

having sum(source)>230就是一个过滤条件,只有总成绩超过230的记录才会显示。

MSSQL报错信息得到表的列名

select * from student having 1=1;

因为要查询所有字段。在表中,从左开始第一个字段就是id,而student.id没有包含在group by当中,而每一列都存在id数据,数据库会因不知道该返回哪一条数据而报错,并且报错信息中包含此列student.id

select * from student group by id having 1=1;

因为student.name没有包含在group by当中,所以会报错,并且报错信息中包含此列student.name

依次可以得到此表所有列名。

相关文章:

  • 2021-12-09
  • 2021-06-12
  • 2021-11-07
  • 2022-12-23
  • 2021-05-25
  • 2021-08-06
猜你喜欢
  • 2021-10-05
  • 2022-02-11
  • 2022-12-23
  • 2021-10-03
  • 2022-02-25
  • 2021-08-11
相关资源
相似解决方案