SQL去除某一字段或多字段相同的数据(指定字段去重)

一、首先看一下原始数据

我们现在要对第二行和第三行的customername、linkman、linkmantel这三个字段去重查询

要得到的结果肯定只有三行,distinct肯定是不行的

也就是这样的效果

二、进行分析

要想得到这样的效果

首先你得有个表,(和没说一样),表里一般都会有个主键吧。并且我们一般也不会对主键进行去重查询吧,因为主键本身就不会重复。我们进行去重的字段都是可以重复的,也就是所以这些是前提。正因为是可以重复的所以进行去重查询才有意义。好吧把我自己绕进去了。

正式分析:

四条变三条数据,并且是根据其中某几个字段去重。那么条件是什么呢。以我的图片来分析。

1、要去重的字段:customername、linkman、linkmantel 必须要有不重复的行

2、主键:customerid 每行都不重复

要想从四行数据变成三行不重复的数据,customerid要少一行,所以我们要明确少哪一行,或者说要明确要得到哪一行。

所以可以通过max(),min()函数达到我们的目的。

那么第一步:

select max(customerid) from yinlian_customer group by customername,linkman,linkmantel

通过对这三个字段分组,得到每一组的max(customerid),也就是这三个重复字段的最大customerid,那么四个customerid变成了三个。

第二步:

select * from yinlian_customer a where customerid in

(select max(customerid) from yinlian_customer group by customername,linkman,linkmantel)

三、结果

达到想要的结果。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值