【技术支持】Oracle plsql中的having子句并非都能改写成where子句。having子句的适用场景。

17 篇文章 0 订阅
9 篇文章 0 订阅

一句话:

group by子句让聚合函数输出不同的记录,having子句优先级低于聚合函数,其就是用于筛选聚合后的各组值,以弥补where子句的不足。所以,having子句中的条件必须是聚合函数。


例子:

update t_userinfo tu set tu.status = 3 
        , tu.update_time = to_date(str_date, 'yyyy-mm-dd hh24:mi:ss')
    where tu.status = 1
      and exists (select 1 from t_annoyance ta
                 where ta.call_userid = tu.userid
                   and ta.insert_time >= to_date(str_date, 'yyyy-mm-dd hh24:mi:ss') - 30
                   and ta.call_time < 6 
                 group by tu.userid
                 having count(distinct ta.becall_userid) > 50)

参考:

http://zhidao.baidu.com/link?url=WOtpjrbl3LLNX08hvGrG4UKjtq5Jh1_j1tNax3s-Ygg33n5O0n9pAQAFa2Z_ZSyPNLy51raZ-3WSOfemClj41a


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值