关于数据去重(distinct)

本文介绍了一种在SQL查询中使用DISTINCT关键字去除重复记录的方法,并通过具体示例展示了如何在分页查询中正确应用数据去重,确保查询结果的准确性。

数据去重SQL:

//DISTINCT对下面的字段进行去重
hqlStr.append(" 
SELECT DISTINCT
si.DOCTOR_ID,SI.PATIENT_ID,ME.NAME,ME.ID_NUMBER,
ME.GENDER_CODE,ME.PHONE_NUM,ME.BIRTHDAY,
ME.MEMBER_PHOTO,ME.UNIT_ID,
ME.ASSIGNED_FLAG  
FROM T_SIGN_CONTRACT si,T_MEMBER me 
WHERE si.PATIENT_ID=ME.MEMBER_ID  
AND si.DOCTOR_ID='"+ doctorId + "'");

service实现层的方法代码如下:

public PagerModel findMemberByDoctorId(SignContractDto dto){
     PagerModel pagerModel = dto.getPageModel();
     if(pagerModel==null){
        pagerModel = new PagerModel();
        dto.setPageModel(pagerModel);
        }
        //调用DAO 拼接查询条件
        signContractDao.buildPagerModelQuery(dto);
        //调用分页查询方法
        commonService.fillSqlPagerModelData(pagerModel,FindMyMemberVo.class,"SI.DOCTOR_ID");
        return pagerModel;
    }

这里有个问题,就是dao层中的数据去重,但是在commonService中的分页查询公共方法没有去重,所以会出现pagedata的数据可能会与totals中的数据不同(在有数据重复的情况下)。

修改方法:

    public PagerModel findMemberByDoctorId(SignContractDto dto){
        PagerModel pagerModel = dto.getPageModel();
        if(pagerModel==null){
            pagerModel = new PagerModel();
            dto.setPageModel(pagerModel);
        }
        //调用DAO 拼接查询条件
        signContractDao.buildPagerModelQuery(dto);
        //调用分页查询方法
        commonService.fillSqlPagerModelData(pagerModel,FindMyMemberVo.class,"distinct(SI.PATIENT_ID)");
        return pagerModel;
    }

在fillSqlPagerModelData的第三个参数写上要去重的条件distinct(SI.PATIENT_ID)(这里不是写主键!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值