mysql 代码段_一段主被叫信息的mysql sql代码解析

本文分享的这段mysql代码,个人觉得对于维护来说还是有必要了解,虽然有时更愿意select 保存成文件后再用awk处理。

代码:

目标:按主叫取出(符合要求)有一条以上录音文件的记录。

复制代码 代码示例:

select SUBSTR(callno,1,INSTR(callno,'#')-1) as callno, count(*) from record

where delflag =0 and begin_time < (now() - INTERVAL 10 DAY) and imported = 1

group by SUBSTR(callno ,1,INSTR(callno,'#')-1) having count(*) > 1;

几个字段:

callno:主叫(手机/固话)#被叫    --很无语主被叫不分开

delflag:录音文件是否已被处理的标志,这是我后面写的一个定期清除录音文件脚本需要的一个字段。

imported:录音文件是否被用户下载过。

解析:

SUBSTR(callno,1,INSTR(callno,'#')-1)             #取callno字段1至第一个#之间的字符,因为主叫位数不定

begin_time < (now() - INTERVAL 10 DAY)           #只处理10天之前的数据

group by SUBSTR(callno ,1,INSTR(callno,'#')-1)   #按截取出的主叫group by

having count(*) > 1                              #取count(*)大于1条的记录

如果要汇总有多少数据的话加个子查询:

复制代码 代码示例:

select count(*) from (select SUBSTR(callno,1,INSTR(callno,'#')-1) as callno, count(*) from record

where delflag =0 and begin_time < (now() - INTERVAL 10 DAY) and imported = 1

group by SUBSTR(callno ,1,INSTR(callno,'#')-1) having count(*) > 1)a;

注意:得加个无用的别名。

备注:虽然这段代码很简单,但运维过程中会经常用到,也许有人的方法更简单。

接下业会介绍下,关于清除录音文件的一个shell脚本:原理很简单,就是依据record表处理所有的用户的录音文件(清除指定日期前的录音文件(保留最后一条))

因为要保留用户的最后一条记录,所以没办法用简单清除脚本。

附,清除录音文件的脚本:

http://www.jbxue.com/article/13870.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值