精华内容
下载资源
问答
  • 今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、查询出所有数据进行分组之后,和重复数据...
  • 按照指定字段查询出出现重复的数据 SELECT m.* FROM dbo.Sheet1$ m,( SELECT ZCMC,ZCFL,XH FROM dbo.Sheet1$ GROUP BY ZCMC,ZCFL,XH HAVING COUNT(1)>1 ) AS m1 WHERE m.ZCMC=m1.ZCMC AND m.ZCFL=m1.ZCFL ...
  • 多个字段同时去重

    万次阅读 2017-06-13 16:21:45
    首先创建一个表结构,其中数据如下: 根据上面的name、age、...办法就是把这三个字段拼接成一个字段进行去重,因为这三个字段拼接成一个字段了,那么我们就可以继续使用distinct关键字进行去重了。 Oracle中的SQL

    首先创建一个表结构,其中数据如下:


    根据上面的name、age、sex三个字段进行去重;

    去重思想:

    说到去重,大家想到的肯定是distinct这个关键字,但这个关键字他只能对一个字段进行去重,那么如何同时根据这三个字段去重呢?办法就是把这三个字段拼接成一个字段进行去重,因为这三个字段拼接成一个字段了,那么我们就可以继续使用distinct关键字进行去重了。

    Oracle中的SQL:

    select distinct name||age||sex a name,age,sex from t_user
    MySQL中的SQL

    select distinct name,age,sex a name,age,sex from t_user
    SQL Server中的SQL

    select distinct name+age+sex a name,age,sex from t_user

    需要注意的是,这三个拼接的字段必须是相同的类型;还有就是如果你在select中使用了这三个字段以外的字段,那么去重的效果就没有了

    展开全文
  • java8有一个collectingAndThen可以根据多个字段去重 list.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getProfessi

    分组

    list.stream().collect(Collectors.groupingBy(ClassEntity::getGrade));
    

    java8有一个collectingAndThen可以根据多个字段去重

    list.stream()
    .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getProfessionId() + ";" + o.getGrade()))), ArrayList::new));
    

    通过hashSet去重:该种去重是bean完全相同的时候算重复数据

    List<String> classNameList = new ArrayList(new HashSet(list));
    
    展开全文
  • 所以达到这目的。 如果集合里面是简单对象,例如Integer、String等等,这种可以使用这样的方式去重复。但是如果是复杂对象,即我们自己封装的对象。用List转Set 却达不到去重复的目的。 所以,回归根本。 判断...

    List去重复 ,我们首先想到的可能是 利用List转Set 集合,因为Set集合不允许重复。 所以达到这个目的。 如果集合里面是简单对象,例如Integer、String等等,这种可以使用这样的方式去重复。但是如果是复杂对象,即我们自己封装的对象。用List转Set 却达不到去重复的目的。 所以,回归根本。 判断Object对象是否一样,我们用的是其equals方法。 所以我们只需要重写equals方法,就可以达到判断对象是否重复的目的。
    话不多说,上代码:

    package com.test;

    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;

    import org.apache.commons.collections.CollectionUtils;

    public class TestCollection {

    //去重复之前集合
    private static  List<User> list = Arrays.asList(
            new User("张三", BigDecimal.valueOf(35.6), 18),
            new User("李四", BigDecimal.valueOf(85), 30),
            new User("赵六", BigDecimal.valueOf(66.55), 25),
            new User("赵六", BigDecimal.valueOf(66.55), 25),
            new User("张三", BigDecimal.valueOf(35.6), 18));
    
    public static void main(String[] args) {
        //排除重复
        getNoRepeatList(list);
    
    }
    
    /**
     * 去除List内复杂字段重复对象
     * @author : shijing
     * 2017年6月2日上午11:28:20
     * @param oldList
     * @return
     */
    private static List<User> getNoRepeatList(List<User> oldList){
        List<User> list = new ArrayList<>();
        if(CollectionUtils.isNotEmpty(oldList)){
            for (User user : oldList) {
                //list去重复,内部重写equals
                if(!list.contains(user)){
                    list.add(user);
                }
            }
        }
    
        //输出新集合
        System.out.println("去除重复后新集合:");
        if(CollectionUtils.isNotEmpty(list)){
            for (User user : list) {
                System.out.println(user.toString());
            }
        }
        return list;        
    } 
    
    static class User{
        private String userName; //姓名
        private BigDecimal score;//分数
        private Integer age;
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public BigDecimal getScore() {
            return score;
        }
        public void setScore(BigDecimal score) {
            this.score = score;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public User(String userName, BigDecimal score, Integer age) {
            super();
            this.userName = userName;
            this.score = score;
            this.age = age;
        }
        public User() {
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public String toString() {
            // TODO Auto-generated method stub
            return "姓名:"+ this.userName + ",年龄:" + this.age + ",分数:" + this.score;
        }
    
        /**
         * 重写equals,用于比较对象属性是否包含
         */
        public boolean equals(Object obj) {  
            if (obj == null) {  
                return false;  
            }  
            if (this == obj) {  
                return true;  
            }  
            User user = (User) obj;  
            //多重逻辑处理,去除年龄、姓名相同的记录
            if (this.getAge() .compareTo(user.getAge())==0
                    && this.getUserName().equals(user.getUserName())
                    && this.getScore().compareTo(user.getScore())==0) {  
                return true;  
            }  
            return false;  
        }  
    }

    }

    执行结果:
    去除重复后新集合:
    姓名:张三,年龄:18,分数:35.6
    姓名:李四,年龄:30,分数:85
    姓名:赵六,年龄:25,分数:66.55

    转载于:https://blog.51cto.com/13545923/2053322

    展开全文
  • Oracle 多个字段去重

    千次阅读 2019-05-28 10:36:28
    DISTINCT SUBSTR(d.DEPT_ID, 0, 2) DEPT,d.SECURITY_CHECK --截取前俩位判断去重复 FROM SAF_T_INSPECTION_DEPT d SELECT A .desc_, A .ID_, B.CHECK_TYPE FROM ( SELECT * FROM BDF2_DEPT D ...
    SELECT
    DISTINCT SUBSTR(d.DEPT_ID, 0, 2) DEPT,d.SECURITY_CHECK --截取前俩位判断去重复
    FROM
    SAF_T_INSPECTION_DEPT d
    SELECT
    	A .desc_,
    	A .ID_,
    	B.CHECK_TYPE
    FROM
    	(
    		SELECT
    			*
    		FROM
    			BDF2_DEPT D
    		WHERE
    			D .parent_id_ = '00'
    		AND D .level_ = '1'
    	) A
    LEFT JOIN (
    	SELECT
    		DEPT,
    		CHECK_TYPE
    	FROM
    		(
    			SELECT
    				*
    			FROM
    				SECURITY_CHECK c
    			WHERE
    				c.DEL_FLAG = '0'
    			AND c.CHECK_DATE >= TO_DATE ('2019-01-01', 'yyyy-MM-dd')
    			AND c.CHECK_DATE <= TO_DATE ('2019-12-31', 'yyyy-MM-dd')
    		) cc
    	LEFT JOIN (
    		SELECT DISTINCT
    			SUBSTR (DEPT_ID, 0, 2) DEPT,
    			SECURITY_CHECK
    		FROM
    			SAF_T_INSPECTION_DEPT
    	) i ON cc.SECURITY_CHECK_ID = i.SECURITY_CHECK
    ) b ON A .id_ = b.DEPT

     

    展开全文
  • MySQL多字段去重

    千次阅读 2018-12-15 14:02:40
    # grade表的字段说明:id表示学生编号,name表示学生姓名,gender表示学生性别,score表示学生分数。 create table grade( id int, name char(1), gender char(1), score int )engine myisam charset utf8; # 向...
  • SQL实现多字段同时去重

    千次阅读 2019-12-07 16:29:16
    首先创建一个表结构,其中数据如下: ...说到去重,大家想到的肯定是distinct这个关键字,但这个关键字他只能对一个字段进行去重,那么如何同时根据这三个字段去重呢?办法就是把这三个字段拼接成一个字段...
  • 在做项目的时候遇到一个情况,是想要获取多个class的字段,然后合并去重,这种需求用java stream 来做最爽的。 /** * 不要过滤的字段 name 姓名 id_card_number 身份证号 | creditor_principal 债权金额本金 ...
  • SQL语句distinct的多个字段去重问题

    万次阅读 多人点赞 2018-09-13 14:52:25
     不过我这边是你需要去重个字段,展示两个字段的情况   还可以看如下文章 https://blog.csdn.net/yz357823669/article/details/78794050 https://blog.csdn.net/djun100/article/details/10452165
  • postgreSql根据多个字段去重详细流程

    千次阅读 2020-05-10 16:00:01
    postgreSql根据多个字段去重详细流程 这是测试表的建标语句,需要的可以拿去用。 CREATE TABLE "public"."class_name" ( "id" int4 NOT NULL DEFAULT nextval('id'::regclass), "class_no" varchar(50) COLLATE ...
  • select 列1, 列2 from 表名 where rowid in (select max(rowid) from 表名 group by 列2)
  • 优质参考资料:http://www.cnblogs.com/A_ming/archive/2013/05/24/3097062.html 转载于:https://www.cnblogs.com/wang-min/p/10431916.html
  • java集合对象根据多个字段去重

    千次阅读 2019-08-07 10:03:05
    昨天看了一篇文章说TreeSet能去重多个,我知道能去重一次,后来测试研究如下: // 这是查看的文档 List<User> list = new ArrayList<>(); list.add(new User("李白","123",1)); list.add(new...
  • delete from szpj_biz_水文观测数据 a  where (a.观测点_id, a.观测时间, a.取样位置) in  (select 观测点_id, 观测时间, 取样位置  from szpj_biz_水文观测数据  group by 观测点_id, 观测时间, 取样位置 ...
  • 如题继续总结工作中遇到的各种需求实现: import org.apache.commons.lang3... * @Description: 根据list中对象指定的n个字段去重测试 */ public class TestMyUser { @org.junit.Test public void test(){ Lis.
  • 单个字段的重复数据查找 与 去重多个字段的重复数据查找 与 去重 正文 示例 accountinfo 表数据如下: 场景一 单个字段重复数据查找 & 去重 我们要把上面这个表中 单个字段 account字段相同的数据...
  • java8特性--list集合根据多个字段去重

    万次阅读 多人点赞 2018-05-28 16:02:58
    实体包含多个字段,当其中两个字段相同均相同时,就认为list中的两条记录是一样的,本来想通过分组实现,java8的分组只提供根据一个字段分组,只好另寻他路,java8有一个collectingAndThen可以根据多个字段去重,因为我们的...
  • select t.tid,t.*,z.*,f.* from 表1 t,表2z, (select * from (select rank() over(partition by bd_id order by p_id desc) r,a.* from 表3 a) where r=1) f where t.tid=z.zid and 1=1 and t.tid=f.fid
  • 今天遇到一个需求,就是实体类list跟据多个字段去重 在网上搜了很多,都不对,最终被我找到,特地分享给大家 为了确保大家的需求和我的一样,附图如下 跟据这四个段去重,如果全部重复,就去掉重复,只保留一个,...
  • //如果没有数据,无需去重 if (null == list || list.isEmpty()){ return new ArrayList(); } //set集合去重复 Set<T> set = new TreeSet(new Comparator() { @SuppressWarnings({ "unchecked", ...
  • 实体包含多个字段,当其中两个字段相同均相同时,就认为list中的两条记录是一样的,本来想通过分组实现,java8的分组只提供根据一个字段分组,只好另寻他路,java8有一个collectingAndThen可以根据多个字段去重,因为我们的...
  • Oracle如何实现多个字段去重

    千次阅读 2016-05-08 20:18:29
    我们通常使用distinct关键字来去除重复记录,还有没有其他办法呢?通过查找资料,确认group by也可以,利用rowid也可以实现功能。其中,group by是用来分组统计的,能用distinct的地方就...我们可以看到,就前两个字段
  • T-SQL对多个字段去重并计数

    千次阅读 2018-04-16 16:06:51
    定义和用法可以一同使用 DISTINCT 和 COUNT 关键词,来计算非重复结果的数目。语法SELECT COUNT(DISTINCT column(s)) FROM table例子注意:下面的例子仅适用于 ORACLE 和 Microsoft SQL server,不能用于 Microsoft ...
  • mongodb多字段去重

    千次阅读 2017-12-05 15:50:00
    字段去重 ...多字段去重 db.student.aggregate([{ $group:{ _id: {name: "$name", sex: "$sex"}, }}]) 如果还需要拿出collection中的其他字段,可以使用$push关键字 db.student.aggregate([{...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,683
精华内容 13,073
关键字:

多个字段重复怎么去重