SQL中where和group by可以连用吗?having算是对检索条件的补充吗?

SQL中where和group by可以连用吗?having算是对检索条件的补充吗?,第1张

首先要分清几个概念1.count() 在SqlServer中式属于聚合函数.聚合函数要求不能出现在where中2.where 可以和 group by连用 但效果和having是不同的 where要求必须在group by 前面..意思是先过滤再分组 而having是必须在group by后面连用 是分组后的过滤 所以过滤条件在什么位置是有很大区别的3.sql中 要求前面有聚合函数和其他字段的,group by中必须把不是聚合函数的字段 加进去

group by、having、where均为SQL语句中的函数。

一、区别

1、执行顺序不同

在SQL语句中,where语句的执行顺序先于group by,group by语句的执行顺序先于having。

2、执行条件不同

在group by的SQL语句中,select中返回的字段,必须包含在group by语句的后面,作为分组的依据,而且字段包含在聚合函数中。

在having 的SQL语句中,having只能用于group by,having 子句中的每一个元素也必须出现在select列表中,having语句可以使用聚合函数。

where不使用聚合函数。

二、用法

1、where用于筛选查询,通常用在select 的后面。

select city, count(*),age from dbo.user where departmentID=2;

2、group by用于对where的查询结果进行分组,通常放在where之后。

select city, count(*),age from dbo.user where departmentID=2 group by city,age;

3、having一般放在group by之后,对where和group by查询出来的分组进行过滤。

select city, count(*),age from dbo.user where departmentID=2 group by city,age having age >40;

扩展资料

ORDER BY子句中还经常会用到排序函数:ASC,DESC

其中,ASC表示升序,DESC为降序

排序函数一般放置在子句的末尾处,表示排序的方式。

例如:SELECT 课程编号,成绩 FROM Score WHERE 学号=‘2006091**1' ORDER BY 成绩 ASC;

参考资料来源:百度百科-SQL语句大全


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9602201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存