博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
having的另类用法
阅读量:6705 次
发布时间:2019-06-25

本文共 806 字,大约阅读时间需要 2 分钟。

  hot3.png

在where条件里面不能用聚合函数,但是having里面可以

在某些已经完全限定条件,查出来的结果集只可能是1条时,

可以不用group by 只用having来实现某些条件限制,只是不知道这样有没有效率问题

举例说明:

inventory 表结构

invCode 物料编号

pnType 物料的类型(A,B,C,D四类)

另外一个表 dispatch 发货单表(经过整理的)

dispatchNo 发货单号

cusCode 客户编号

invCode 物料编号

要统计某一段时间内,

对于某个物料,购买客户数 大于 10,

或者 有该物料的发货单数大于 20,

把inventory 表中的pnType更新成'A'

正常做法

update inventory  set pntype='A'

   where exists

   (

       select 1 from (select COUNT(distinct dis.dispatchNo) as disCnt, COUNT(distinct dis.cusCode ) as cusCnt from dispatch dis where dis.invCode =inventory.invCode ) t

           WHERE t.disCnt>= 20 or cusCnt >= 10

   )

 

特别一点的做法

   update inventory  set pntype='A'

   where exists

   (

       select 1 from dispatch dis where dis.invCode = inventory.invCode

           having COUNT(distinct dis.dispatchNo)  >= 20 or COUNT(distinct dis.cusCode)  >= 10

   )

转载于:https://my.oschina.net/caiwf/blog/89506

你可能感兴趣的文章
Failed to validate a newly established connection异常
查看>>
关联对象 AssociatedObject 完全解析
查看>>
Windows下80端口被pid为4的System进程占用解决方法
查看>>
POST 后台404错误
查看>>
Ubuntu 解压zip文件名乱码问题解决
查看>>
动态规划
查看>>
Hibernate的延迟加载
查看>>
IE中input标签密码框与文本框宽度不一样问题
查看>>
【系统架构师修炼之道】(10):绪论——系统架构师的定义与职业素质
查看>>
Uber 开源地理可视化工具 Ketoper.gl,加速数据处理
查看>>
NSDate格式化小例
查看>>
运维不容错过的4个关键指标!
查看>>
spring 基础
查看>>
商品详情页上拉查看详情
查看>>
Kubernetes DNS服务简介
查看>>
「压缩」会是机器学习的下一个杀手级应用吗?
查看>>
IIS应用程序池_缓存回收
查看>>
使用Docker镜像和仓库
查看>>
二叉树
查看>>
springcloud(一):大话Spring Cloud
查看>>