当前位置:网站首页>mysql----group by、where以及聚合函数需要注意事项
mysql----group by、where以及聚合函数需要注意事项
2022-08-10 19:06:00 【幼儿园里的山大王】
一、group by产生的坑
一、假设有一张测试表test

执行sql语句:select name from test group by name;通过分组过滤掉重复的name,
然后展先的字段也是name,这个没有问题的。

二、注意坑
如果sql语句改为select * from test group by name;这个时候就有问题了。如果这个时候有一个中间表3,如下可以看到问题,也就是说,如果通过goup by进行分组过滤查询,查询字段又是全部,而分组字段却又只是一个,那么有重复数据的其他字段就会出现问题,由于mysql单元格里只能有一个数据,这个时候就会报错。

三、解决方法
对于group by 进行去重,select后面跟着的查询字段,要么就是group by里的字段(select name from test group by name ),要么就是使用聚合函数(select name sum(number) from test group by name),(select name,sum(id) from test group by name,number,此结果如下图)

二、where 注意事项
一、where 后面不能跟聚合函数
如果where后面跟了聚合函数,会出现Invalid use of group function的错误。如果想使用聚合函数进行过滤或统计之类的操作,要么是在select 后面进行,要么就在having后面进行。
二、where和having之间的区别
1、where是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”,因为where的执行顺序在聚合函数之前。
2、having是一个过滤声明,过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,且having后面可以使用“聚合函数”。注意:having是对查出来的结果进行过滤,那么对没有查出来的值就不能使用having。另外。having不是必须和group by一起使用的,两者没有捆绑关系
边栏推荐
- 回老家去?
- 皮质-皮质网络的多尺度交流
- 魔方电池如何“躺赢”?解锁荣威iMAX8 EV“头等舱”安全密码
- 【greenDao】Cannot access ‘org.greenrobot.greendao.AbstractDaoSession‘ which is a supertype of
- LeetCode·27.移除元素·双指针
- 从 GAN 到 WGAN
- 西安凯新(CAS:2408831-65-0)Biotin-PEG4-Acrylamide 特性
- Optimization is a habit The starting point is to 'stand close to the critical'
- QoS Quality of Service Seven Switch Congestion Management
- 含有PEG 间隔基和一个末端伯胺基团(CAS:1006592-62-6)化学试剂
猜你喜欢

FEMRL: A Framework for Large-Scale Privacy-Preserving Linkage of Patients’ Electronic Health Rec论文总结

Redis persistence mechanism

电脑如何去掉u盘写保护的状态
We used 48h to co-create a web game: Dice Crush, to participate in international competitions
[email protected]纳米模拟酶|PtCo合金纳米粒子"/>水溶性合金量子点纳米酶|CuMoS纳米酶|多孔硅基Pt(Au)纳米酶|[email protected]纳米模拟酶|PtCo合金纳米粒子

2022杭电多校七 Black Magic (签到)

『牛客|每日一题』岛屿数量

铱钌合金/氧化铱仿生纳米酶|钯纳米酶|GMP-Pd纳米酶|金钯复合纳米酶|三元金属Pd-M-Ir纳米酶|中空金铂合金纳米笼核-多空二氧化硅壳纳米酶

第14章_MySQL事务日志

30分钟使用百度EasyDL实现健康码/行程码智能识别
随机推荐
803. 区间合并(贪心)左端点、右端点排序均可
[Teach you how to make a small game] Write a function with only a few lines of native JS to play sound effects, play BGM, and switch BGM
30分钟使用百度EasyDL实现健康码/行程码智能识别
2816. 判断子序列(双指针)
Hangdian Multi-School Seven 1003-Counting Stickmen (Combination Mathematics)
测试/开发程序员值这么多钱么?“我“不会愿赌服输......
史上最全GIS相关软件(CAD、FME、Arcgis、ArcgisPro)
皮质-皮质网络的多尺度交流
When selecting a data destination when creating an offline synchronization node - an error is reported in the table, the database type is adb pg, what should I do?
铁蛋白-AHLL纳米颗粒|人表皮生长因子-铁蛋白重链亚基纳米粒子(EGF-5Cys-FTH1)|铁蛋白颗粒包载氯霉素Chloramphenicol-Ferritin
uni-app 数据上拉加载更多功能
几行深度学习代码设计包含功能位点的候选免疫原、酶活性位点、蛋白结合蛋白、金属配位蛋白
UnitTest中的Path must be within the project 问题
IIC通信协议总结[通俗易懂]
800. 数组元素的目标和(双指针)
常用Anaconda安装错误解决办法Traceback (most recent call last):[通俗易懂]
argparse——命令行参数解析
从 Delta 2.0 开始聊聊我们需要怎样的数据湖
力扣18-四数之和——双指针法
第14章_MySQL事务日志