为什么sql语句中where后面不能直接跟分组函数

为什么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,降序:desc

2. SQL查询语句的书写顺序

书写顺序:select > from > where > group by > having > order by

其中selectfrom关键字是必不可少的,其他关键字是可选的。

3.SQL查询语句的执行顺序

执行顺序:from > where > group by > having > select > order by

select 之前:负责检索数据。

select和order by : 负责设置查看规则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】利用Tool Button控件创建下拉菜单按钮

功能描述 利用qt进行界面设计和开发,创建下拉按钮。 详细实现 1、在qt侧工具栏利用设计打开.ui文件 2、创建按钮 创建一个Tool Button按钮,并在属性窗口中的QToolButton栏中选中MenuButtonPopup属性。 3、创建action 在Action编辑器创建对应的ac…

基于形态学的方法来实现指纹细节的快速细化算法:Python实现及优化策略

尊敬的读者们,大家好,我在这篇文章中将会和大家分享我所探索的一种用于确定指纹细节的快速细化算法。我相信这将对有相同需求的人带来一些启示,同时,我也希望听取大家对我的方法的反馈和建议,帮助我持续改进和优化这个算法。 一、背景与动机 在数字图像处理领域,特别是…

SQL编译优化原理

最近在团队的OLAP引擎上做了一些SQL编译优化的工作,整理到了语雀上,也顺便发在博客上了。SQL编译优化理论并不复杂,只需要掌握一些关系代数的基础就比较好理解;比较困难的在于reorder算法部分。 文章目录 基础概念关系代数等价 j…

k8s webhook实例,java springboot程序实现 对Pod创建请求添加边车容器 ,模拟istio实现日志文件清理

k8s webhook实例,java springboot程序实现 对Pod创建请求添加边车容器 ,模拟istio实现日志文件清理 大纲 背景与原理实现流程开发部署my-docker-demo-sp-user服务模拟业务项目开发部署my-sidecar服务模拟边车程序开发部署服务my-docker-demo-k8s-opera…

零拷贝原来这么简单!

我们总会在各种地方看到零拷贝,那零拷贝到底是个什么东西。 接下来,让我们来理一理啊。 拷贝说的是计算机里的 I/O 操作,也就是数据的读写操作。计算机可是一个复杂的家伙,包括软件和硬件两大部分,软件主要指操作系统…

uniapp h5 竖向的swiper内嵌视频实现抖音短视频垂直切换,丝滑切换视频效果,无限数据加载不卡顿

一、项目背景:实现仿抖音短视频全屏视频播放、点赞、评论、上下切换视频、视频播放暂停、分页加载、上拉加载下一页、下拉加载上一页等功能。。。 二、前言:博主一开始一直想实现类似抖音进入页面自动播放当前视频,上下滑动切换之后播放当前…

Mac plist文件

macOS、iOS、iPadOS的应用程序都可能会有plist配置文件,他是苹果系列操作系统特有的配置文件。 plist的本质是个xml格式的文本文件,英文全称是property list,文件后缀使用.plist。 对于普通用户来说,基本不用管plist文件是什么&…

excel要如何自动累加某个单元格上方的所有单元格?

输入公式 SUM(INDIRECT("A1:A"&ROW()-1)) 运行实例如下图 注意图中b4,和b5单元格都输入相同的公式。 此方法可以避免写vba,以前此类问题的解决都是通过vba代码进行处理 对函数进行解析 主要使用了 INDIRECT() 2、公式说明:…

Linux-grep

grep 简介 grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用 正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、e…

Leetcode | Binary search | 22. 74. 162. 33. 34. 153.

22. Generate Parentheses 要意识到只要还有左括号,就可以放到path里。只要右括号数量小于左括号,也可以放进去。就是valid的组合。recurse两次 74. Search a 2D Matrix 看成sorted list就好。直接用m*n表示最后一位的index,并且每次只需要 …

打印Winform控件实现简陋版的分页打印(C#)

本文的代码可以从这里获取:winformDemo.rar 张祥裕/分享的资源名称 - Gitee.com 作者的水平有限,如有错误,望指正。 为了简单起见,纸张大小,打印机等信息按照默认的来,本文的实现方案是:打印Pa…

C语言:反转一个单链表

Lei宝啊:个人主页 题目: 描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 接口: struct ListNode* reverseList(struct ListNode* head){} 示例: 输入: head [1…

“深入解析SpringBoot:从入门到精通“

标题:Spring Boot:从入门到精通 摘要:本文将深入解析Spring Boot框架,从入门到精通,带你了解Spring Boot的基本概念、核心特性和使用方法,并提供示例代码帮助你快速上手。 正文: 一、什么是S…

全局ip代理安全吗? 手机设置全局代理方法详解

全局IP代理并不一定是安全的,因为全局IP代理会将所有网络流量都通过代理服务器进行转发,包括敏感信息和隐私数据。如果代理服务器受到黑客攻击或存在安全漏洞,可能会导致数据泄露和其他安全问题。因此,在使用全局IP代理时&#xf…

Spring Boot项目的创建

hi 大家好,又见面了,今天继续讲解Spring Boot 文章目录 🐶1.什么是Spring Boot?🐶2.Spring Boot的优势🐶3.Spring Boot项目创建🌼3.1使用ieda创建🥝3.1.1下载插件Spring Boot Helper🥝3.1.2创建项目 &…

VS创建wsdl服务提供给java调用

文章目录 前言1.c#创建asp.net web服务1.1 创建ASP.NET Web应用程序1.2 添加服务类1.3 定义服务方法1.3 浏览服务1.4 发布服务1.5 IIS部署服务 2.Java中调用服务2.1 用动态客户端工厂类调用2.1.1 引入依赖2.1.2 调用测试代码2.1.3 测试结果 2.2 创建代理类进行调用2.2.1 使用ws…

vue3 如何获取env

标题import.meta.env是一个全局属性,它包含了许多有用的环境信息,比如MODE、BASE_URL等。你可以在任何Vue组件、模块或文件中使用它来获取这些环境变量。 console.log(import.meta.env.MODE); // 获取当前模式,比如 development 或 producti…

解决Oracle锁表问题

问题描述: 数据表不能修改或删除数据,如果操作则会卡住,这可能是锁表了。 解决步骤: (1)查看哪个表被锁 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_object…

修改整数(有点坑,所以发出来了)

问题描述 小贝给了小聪一个正整数 x,但是小聪决定把这个数改掉。她可以把整数 x 每个位置上的数 t 改成 9-t。 请你帮助小聪来计算一下,如何把 x 改成一个最小的正整数,注意,不能出现首位为 0 的情况。 输入格式 输入一个正整数…

云原生环境下的安全风险与安全架构设计

随着云计算和容器技术的发展,云原生应用已经成为企业和开发者的新选择。然而,云原生环境也给企业带来了一系列安全挑战。本文将分析云原生环境下的安全风险,并提出相应的安全架构设计策略。 一、云原生环境下的安全风险 云原生环境具有动态性…