cust_uuid | cname | ctel | create_date | 数据批次 |
1 | 张三 | 12345678716 | 2018/3/26 | 1 |
1 | 李四 | 12345678716 | 2018/3/27 | 2 |
2 | 王三 | 12343278716 | 2018/3/26 | 1 |
2 | 王四 | 12343278716 | 2018/3/27 | 2 |
cust 表中,有以上数据,导入数据的批次不同,但是cust_uuid一样,现在需要去重。一个id只显示一条最新数据,怎么去重?希望大牛们指点迷津,谢谢。
group by cust_uuid,max(数据批次)再关联这个表得到其他数据
select * from table t1, (select cust_uuid,max(create_date) from table group by cust_uuid ) t2
where t1.cust_uuid=t2.cust_uuid and t1.create_date=t2.create_date;
在所有cust_uuid一样的表中,显示最新的一条数据。
关键看你打算如何去重,是永久性去重呢,还是查询去重。
如果是永久性去重,那就写个代码判断删除呗。如果是查询去重,那就类似上面说的。
可以用partition by来分组去重
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY cust_uuid ORDER BY create_date) AS c FROM cust ) AS t WHERE t.c = 1;
参考:https://www.cnblogs.com/zhangchengye/p/5473860.html