java mysql数据去重_java使用MySQL和HQL数据去重
思路
先查詢出滿足某種條件的數據的最小ID,然后刪除最小ID以外的數據就實現了去重
實例
查詢最小ID的重復數據
select * from oms_relation_model orm
where orm.fd_id=
(
select min(t.fd_id) from oms_relation_model t
where orm.fd_ekp_id=t.fd_ekp_id and orm.fd_ekp_id=t.fd_ekp_id
)
;
刪除操作
delete from oms_relation_model s
where s.fd_id not in (
select orm.fd_id from oms_relation_model orm
where orm.fd_id=
(
select min(t.fd_id) from oms_relation_model t
where orm.fd_ekp_id=t.fd_ekp_id and orm.fd_ekp_id=t.fd_ekp_id
)
);
HQL
/**
* 不重復的id列表
*
* @return
*/
private List getUniqueIds() {
Session session = getBaseDao().getHibernateSession();
String sql = "select fdId from OmsRelationModel orm"
+
" where orm.fdId in" +
" (select min(fdId) from OmsRelationModel t where orm.fdEkpId=t.fdEkpId and orm.fdAppPkId=t.fdAppPkId)";
Query query = session.createQuery(sql);
List result = query.list();
logger.info("查詢重復數據,list=>" + JSONUtils.valueToString(result));
return result;
}
/**
* 刪除重復的
*
* @param idList
*/
private void delSame(List idList) {
Session session = getBaseDao().getHibernateSession();
String sql = "delete from OmsRelationModel where fdId not in (:ids)";
Query query = session.createQuery(sql);
query.setParameterList("ids", idList);
int result = query.executeUpdate();
logger.info("查詢重復數據,list=>" + JSONUtils.valueToString(result));
session.flush();
session.clear();
}
總結
以上是生活随笔為你收集整理的java mysql数据去重_java使用MySQL和HQL数据去重的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: odbc mysql 配置文件_ODBC
- 下一篇: win下nginx+php+mysql服