著名的wordpress网站,建设银行网站功能,1688货源网官方网站,中山建网站费用多少为什么sql语句中where后面不能直接跟分组函数
当我们错误的使用分组函数之后#xff0c;mysql会报错#xff0c;提示“ Invalid use of group function”#xff0c;这就是今天要说的问题#xff1a;where后面不能直接跟分组函数。
分组函数有五种count、sum、avg、max、…为什么sql语句中where后面不能直接跟分组函数
当我们错误的使用分组函数之后mysql会报错提示“ Invalid use of group function”这就是今天要说的问题where后面不能直接跟分组函数。
分组函数有五种count、sum、avg、max、min 为什么他们不能跟在where后面
这几个函数在使用时一般都和group by联合使用原理是先分组再进行函数计算。当然我们在平常使用时有这种情况。
select max(age) from t_student这个sql语句中并没有group by但还是可以使用分组函数max。这是因为当sql语句种没有手动使用group by时那整个调用的表默认是一个分组。max函数是在这个大分组中取的最大值。所以我们就可以知道应该是先分组再调用分组函数这样的逻辑。
sql语句执行的顺序
接下来我们了解下sql语句执行的顺序
例从学生表t_student中筛选出3年级年龄最大的女孩儿们结果按照学号id升序
select max(age) from t_student where grade 3 group by sex having sex girl order by studentID asc第一步from 选择表
第二步where 筛选条件筛选对象–行( row 数据记录 )
第三步group by 将筛选出来的数据进行分组
第四步having 筛选条件筛选对象–组
第五步select 选取最后的结果
第六步order by 将结果按照特定顺序排列
从上面的执行顺序我们又知道了先执行where后group by分组分组完之后才能使用分组函数。
所以where后面的筛选条件出现了分组函数那就会报错。还没有进行分组呢不能使用分组函数。
当我们遇到这种情况时就要改变思路用子查询即可where后面跟一个子查询就迎刃而解了。
SQL查询语句的书写顺序、执行顺序和注意事项
1.SQL查询语句常用关键字
select 、from、where、group by、having、order by
select 指定查看结果集中的那个列或列的计算结果from 从哪张表查询数据where 筛选过滤条件group by 将上面过滤出的数据进行分组having 对上面已经分组的数据进行过滤的条件order by 对查询到的结果进行排序。升序asc降序desc2. SQL查询语句的书写顺序
书写顺序select from where group by having order by其中select和from关键字是必不可少的其他关键字是可选的。
3.SQL查询语句的执行顺序
执行顺序from where group by having select order byselect 之前负责检索数据。
select和order by 负责设置查看规则。