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的就是我们需要的数据
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: MySQL对主键重复的处理
- 下一篇: java中增强for循环的原理