首页 新闻 赞助 找找看

sqlserver 数据去重

0
[待解决问题]
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只显示一条最新数据,怎么去重?希望大牛们指点迷津,谢谢。

慕容霖枫的主页 慕容霖枫 | 菜鸟二级 | 园豆:206
提问于:2018-03-26 11:12
< >
分享
所有回答(4)
0

group by cust_uuid,max(数据批次)再关联这个表得到其他数据

ndgail | 园豆:148 (初学一级) | 2018-03-26 11:22
0

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一样的表中,显示最新的一条数据。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-26 11:57
0

关键看你打算如何去重,是永久性去重呢,还是查询去重。

如果是永久性去重,那就写个代码判断删除呗。如果是查询去重,那就类似上面说的。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-03-26 12:16
0

可以用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

nil | 园豆:879 (小虾三级) | 2018-03-30 10:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册