分组后 排除存在某种情况的 的查询
时间:2021-07-22
本文章向大家介绍分组后 排除存在某种情况的 的查询,主要包括分组后 排除存在某种情况的 的查询使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上午,公司运维问我一个查询问题,给他整的抓耳挠腮,虽然能实现,但是查询效率不敢恭维就来问我了。
场景模拟
社区进行了普调,统计了社区中各位业主的(A、B、C)工具情况,如下
业主名称 | 工具类型 |
---|---|
张三 | A |
张三 | B |
张三 | C |
李四 | B |
李四 | A |
王五 | B |
赵六 | A |
孙七 | B |
周八 | B |
周八 | A |
吴九 | A |
吴九 | C |
社区领导要统计没有
C
工具的业主名称
解决方式
自然会想到差集,先查询到有该工具的,然后再排除掉这些里面有其他工具的。这样会用到 not
!
此类运算符,自然效率差的爆。那怎么解决呢?转念想一下,就想到了 case搜索函数
预设表名: table
业主名称:owner
工具:tool
SELECT * FROM (
SELECT `owner`, MAX( CASE WHEN tool ='C' THEN 1 ELSE 0 END ) AS `only_tool` FROM table GROUP BY `owner`
) t WHERE t.`only_tool` = 1
后续这个 MAX
可以看情况处理,比如没有两样的 就可以 继续使用CASE搜索函数
并用 IN
或者 EXISTS
来解决。
原文地址:https://www.cnblogs.com/akashicbrother/p/15043450.html
- c++学习笔记之封装篇(上)
- c++学习笔记之继承篇
- c++学习笔记之继承篇
- silverlight:对象拖动的优雅解决方案
- Silverlgiht:快速去除/恢复对象的颜色
- deepin系统下如何设置wifi热点(亲测有效)
- Silverlight单元测试
- Silverlight:页面/控件继承的二种写法
- java学习:Hibernate入门
- Silverlight Telerik控件学习:GridView双向绑定
- XmlWriter/XmlReader示例代码
- Silverlight Telerik控件学习:RadComboBox之自动完成(AutoComplete)
- Silverlight Telerik控件学习:数据录入、数据验证
- AI与自动驾驶
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法