zoukankan      html  css  js  c++  java
  • 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<String> 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();
    	}
    
  • 相关阅读:
    XHR——XMLHttpRequest对象
    原生JS弹出层详解,从简单到复杂
    php面向对象(OOP)编程完全教程
    css hack
    Ajax+php 详细分析 (没完整)
    Zend Studio 12 生成 WSDL
    PHP WebService/Soap接口生成方法。
    php soap客户端调试实例及调试
    简单数据结构之栈模拟
    经典算法之约瑟夫问题
  • 原文地址:https://www.cnblogs.com/tangyouwei/p/11422111.html
Copyright © 2011-2022 走看看