当前位置:网站首页>Interview shock 62: what are the precautions for group by?
Interview shock 62: what are the precautions for group by?
2022-07-05 14:37:00 【Wang Lei】
Be careful : The following content of this article is based on MySQL 5.7 InnoDB Database engine .
1.group by Can't add after where
stay MySQL in , be-all SQL The query syntax should follow the following syntax order :
select from where group by having order by limit
The above grammatical order is not interchangeable , Otherwise, the report will be wrong . For example, we can't group by Then add where Query statement , Otherwise, the following error will occur :
The execution of the syntax sequence is and MySQL Of select Statement execution order related ,select The order of execution is as follows :
from Stage where Stage group Stage having Stage select Stage order by Stage limit Stage
Be careful : among select A special , When writing query statements , Write it first , Other grammatical order shall be consistent with the execution order .
2.having or group by Can be used alone
having and group by Can be used alone , The following query is shown : 
3.having and group by You can use aliases
When having When used alone , Its role and where similar , But there are subtle differences . For example where Alias cannot be used in , but having and group by But it can be another name . Let's create a test table to demonstrate , Build table SQL as follows :
drop table if exists student_score;
create table student_score(
id int primary key auto_increment comment ' Primary key ',
name varchar(250) comment ' full name ',
math decimal(4,1) comment ' Math scores ',
chinese decimal(4,1) comment ' Chinese achievement '
);
insert into student_score(name,math,chinese) values(' Zhang San ',50,50),(' Li Si ',80,80),(' Wang Wu ',90,90);
The data in the table is shown in the figure below :
When we use the total score alias total Respectively in where and having When used in , The query results are as follows :
As can be seen from the above results ,having Queries can use select Alias in , and where Cannot use alias . except having You can use something other than an alias ,group by You can also use aliases , As shown in the figure below : 
Why? where You can't use aliases ? by having But you can ?
where Alias cannot be used in , This sum MySQL Statement execution order ,MySQL The execution order of the statements is as follows :
from Stage where Stage group Stage having Stage select Stage order by Stage limit Stage
in other words , In execution where When inquiring ,select Not yet implemented , So in where You want to use a that has not yet been executed select Aliases in are not acceptable . From the above execution sequence, you can see ,having Execution is also select Before , Why can it be used select The alias in ?
This is because MySQL stay 5.7.5 After that, it was extended , Allow in having Use aliases , There are corresponding instructions in the official documents , As shown in the figure below :
MySQL Official document address :https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
PS:group by Be able to use the principle and having similar .
summary
SQL Statements must be written in this order :select、from、where、group by、having、order by、limit. among having or group by Can be used alone , And in MySQL 5.7.5 after ,group by and having You can use alias queries , but where Cannot use alias .
It's up to you to judge right and wrong , Disdain is to listen to people , Gain or loss is more important than number .
official account :Java Analysis of the real interview questions
Interview collection :https://gitee.com/mydb/interview
边栏推荐
- 非技术部门,如何参与 DevOps?
- PyTorch二分类时BCELoss,CrossEntropyLoss,Sigmoid等的选择和使用
- mysql8.0JSON_CONTAINS的使用说明
- CYCA少儿形体礼仪 宁波市培训成果考核圆满落幕
- Total amount analysis accounting method and potential method - allocation analysis
- How can non-technical departments participate in Devops?
- 【招聘岗位】基础设施软件开发人员
- How to make a second clip of our media video without infringement
- Under the crisis of enterprise development, is digital transformation the future savior of enterprises
- leetcode:881. 救生艇
猜你喜欢

无密码身份验证如何保障用户隐私安全?

Pointer operation - C language

How does redis implement multiple zones?

非技术部门,如何参与 DevOps?

There is a powerful and good-looking language bird editor, which is better than typora and developed by Alibaba

729. 我的日程安排表 I :「模拟」&「线段树(动态开点)」&「分块 + 位运算(分桶)」

Share 20 strange JS expressions and see how many correct answers you can get

Opengauss database source code analysis series articles -- detailed explanation of dense equivalent query technology (Part 2)

快消品行业SaaS多租户解决方案,构建全产业链数字化营销竞争力

Introduction, installation, introduction and detailed introduction to postman!
随机推荐
R language dplyr package select function, group_ By function, mutate function and cumsum function calculate the cumulative value of the specified numerical variable in the dataframe grouping data and
Thymeleaf 常用函數
R language ggplot2 visualization: use ggplot2 to visualize the scatter diagram, and use the labs parameter to customize the X axis label text (customize X axis labels)
Section - left closed right open
无密码身份验证如何保障用户隐私安全?
做自媒体视频二次剪辑,怎样剪辑不算侵权
裁员下的上海
乌卡时代下,企业供应链管理体系的应对策略
Sharing the 12 most commonly used regular expressions can solve most of your problems
PyTorch二分类时BCELoss,CrossEntropyLoss,Sigmoid等的选择和使用
CPU设计相关笔记
【华为机试真题详解】字符统计及重排
Google eventbus usage details
C language -- structure and function
Topology可视化绘图引擎
浅谈Dataset和Dataloader在加载数据时如何调用到__getitem__()函数
PostgreSQL 13 installation
[learning notes] stage test 1
R language uses boxplot function in native package (basic import package, graphics) to visualize box plot
Thymeleaf th:classappend属性追加 th:styleappend样式追加 th:data-自定义属性