时间:2021-07-01 10:21:17 帮助过:40人阅读
报错信息:Invalid use of group function即“集函数的无效用法”
聚合函数不能直接使用在where后面
正确写法:
- <span style="color: #000000;"># 利用子查询先查出来再比较
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> tb_test_emp <span style="color: #0000ff;">WHERE</span> score <span style="color: #808080;">></span> (<span style="color: #0000ff;">SELECT</span> <span style="color: #ff00ff;">AVG</span>(score) <span style="color: #0000ff;">FROM</span> tb_test_emp );
where 子句的作用是对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
- <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> tb_test_dept <span style="color: #0000ff;">WHERE</span> id <span style="color: #808080;">in</span> (<span style="color: #0000ff;">SELECT</span> dept_id <span style="color: #0000ff;">FROM</span> tb_test_emp <span style="color: #0000ff;">WHERE</span> score <span style="color: #808080;"><</span> <span style="color: #800000; font-weight: bold;">60</span>);
- <span style="color: #000000;"># 意思就是没有不及格的员工
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> tb_test_dept <span style="color: #0000ff;">WHERE</span> id <span style="color: #808080;">not</span> <span style="color: #808080;">in</span> (<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">DISTINCT</span> dept_id <span style="color: #0000ff;">FROM</span> tb_test_emp <span style="color: #0000ff;">WHERE</span> score <span style="color: #808080;"><</span> <span style="color: #800000; font-weight: bold;">60</span>);
EXISTS 判断子查询是否返回null,如果返回null那么就匹配失败,否则匹配成功
使用exists,外查询(父查询)一般会和子查询发生条件关联
- AND d.id =<span> e.dept_id</span>
- <span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> tb_test_dept d <span style="color: #0000ff;">WHERE</span> <span style="color: #808080;">EXISTS</span> (<span style="color: #0000ff;">SELECT</span> dept_id <span style="color: #0000ff;">FROM</span> tb_test_emp e <span style="color: #0000ff;">WHERE</span> score <span style="color: #808080;"><</span> <span style="color: #800000; font-weight: bold;">60</span> <span style="color: #808080;">AND</span> d.id <span style="color: #808080;">=</span><span style="color: #000000;"> e.dept_id);
- </span><span style="color: #0000ff;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">FROM</span> tb_test_dept d <span style="color: #0000ff;">WHERE</span> <span style="color: #808080;">not</span> <span style="color: #808080;">EXISTS</span> (<span style="color: #0000ff;">SELECT</span> <span style="color: #0000ff;">DISTINCT</span> dept_id <span style="color: #0000ff;">FROM</span> tb_test_emp e <span style="color: #0000ff;">WHERE</span> score <span style="color: #808080;"><</span> <span style="color: #800000; font-weight: bold;">60</span> <span style="color: #808080;">AND</span> d.id <span style="color: #808080;">=</span> e.dept_id );
mysql-Invalid use of group function-聚合函数不能直接使用在where后面-使用exists,外查询与子查询应条件关联
标签:image src class 讲师 bsp nbsp 标准 信息 销售