MSSQL利用报错得到数据库列名

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

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

原文地址:https://www.cnblogs.com/dubhe-/p/10023200.html