数据去重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)(这里不是写主键!)
本文介绍了一种在SQL查询中使用DISTINCT关键字去除重复记录的方法,并通过具体示例展示了如何在分页查询中正确应用数据去重,确保查询结果的准确性。
3724

被折叠的 条评论
为什么被折叠?



