mysql查询去重复保留一条记录_mysql查询重复数据并保留一条

1.需求

现有一张利息表hyd_day_loandetil,有以下字段

主键ID、借贷IDLOAN_TURN_ID、账单日BILL_TIME、正常利息INTEREST、逾期利息OVERDUE_BALANCE字段

表中存在同一天、同一笔借贷、两条数据,现在要把重复的数据查询出来并把正常利息+逾期利息比较小的那一条查询出来

2.SQL脚本实现

SELECT N.id,DATE_SUB(N.BILL_TIME, interval 3 day) FROM(

SELECT @rownum:=@rownum*-1 AS rownum,hyd_day_loandetil.* FROM (SELECT @rownum:=1) r, hyd_day_loandetil

WHERE (LOAN_TURN_ID,BILL_TIME) IN(

SELECT LOAN_TURN_ID,BILL_TIME FROM hyd_day_loandetil

GROUP BY LOAN_TURN_ID,BILL_TIME having count(*) > 1

)

ORDER BY BILL_TIME,LOAN_TURN_ID,hyd_day_loandetil.INTEREST+hyd_day_loandetil.OVERDUE_BALANCE DESC

) N

WHERE N.rownum=13.SQL脚本分析

3.1根据LOAN_TURN_ID,BILL_TIME分组得到重复的数据并根据INTEREST+OVERDUE_BALANCE倒序排序

3.2给每条数据一个伪列值依次为-1,1,-1,1,-1,1......

3.3可以看出来我们只要筛选N.rownum=1的就是我们需要的数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值