对查询结果的某个字段去重

时间:2021-05-28 15:01:42

select id,substr(jysj,1,10),count(*) as jyrq from yw_jfgl_cxjylsb_ls where id='63000099' 
   and (((substr(jysj,1,10)>='2017-03-04') and (substr(jysj,1,10)<='2017-03-05')) 
        or ((substr(jysj,1,10)>='2017-03-11') and (substr(jysj,1,10)<='2017-03-12'))
          or ((substr(jysj,1,10)>='2017-03-18') and (substr(jysj,1,10)<='2017-03-19'))
            or ((substr(jysj,1,10)>='2017-03-25') and (substr(jysj,1,10)<='2017-03-26'))
             or ((substr(jysj,1,10)>='2017-04-01') and (substr(jysj,1,10)<='2017-04-02'))
               or ((substr(jysj,1,10)>='2017-04-08') and (substr(jysj,1,10)<='2017-04-09')))
   and (ZHKHYBT is not null)
      group by jgh,substr(jysj,1,10) order by jyrq;



查询的结果中ZHKHYBT字段有重复的行,怎么保持ZHKHYBT字段结果的唯一性,也就是将ZHKHYBT字段重复的去掉,只对这个字段去重

9 个解决方案

#1


>查询的结果中ZHKHYBT字段有重复的行
你并没有取出ZHKHYBT啊

原表中ZHKHYBT字段有重复数据需要筛选?
那筛选的原则是什么,你还是举例说明一下要求吧,情况全面一些,才好明白你想怎样

#2


引用 1 楼 Diza1986 的回复:
>查询的结果中ZHKHYBT字段有重复的行
你并没有取出ZHKHYBT啊

原表中ZHKHYBT字段有重复数据需要筛选?
那筛选的原则是什么,你还是举例说明一下要求吧,情况全面一些,才好明白你想怎样


我虽然没输出ZHKHYBT,但是我对这个字段做了控制,在该字段不为0的情况下才取得数,我刚刚将ZHKHYBT字段也输出时,发现该字段数据有一些数据是一样的,我就将这些相同的数据只算一条,然后再分组求和;

#3


完全相同的话distinct一下不就ok了,不清楚你的去重复是什么需求

#4


引用 3 楼 Diza1986 的回复:
完全相同的话distinct一下不就ok了 对查询结果的某个字段去重,不清楚你的去重复是什么需求


如图所示,我的ZHKHYBT对应的个数有1,2,4几种,我先想要的结果就是一个ZHKHYBT对应的count(*)只能为1,保证ZHKHYBT的唯一性,

#5


对ZHKHYBT字段进行去重,无论一个ZHKHYBT数据对应多少条信息,我都只算1个

#6


把count(*) 改成 count(distinct ZHKHYBT)

#7


引用 6 楼 Diza1986 的回复:
把count(*) 改成 count(distinct ZHKHYBT)


可能是我没说清楚,这样写的结果还是会存在重复,就是一个ZHKHYBT字段无论他是哪一天买的都只是一次,也就是说要讲jyrq和ZHKHYBT一同去重,我想外面套个distinct子查询来实现

#8


前面的其它字段 不重复,要一起的结果,咋能对ZHKHYBT去重.

#9


引用 7 楼 qq_36934345 的回复:
Quote: 引用 6 楼 Diza1986 的回复:

把count(*) 改成 count(distinct ZHKHYBT)


可能是我没说清楚,这样写的结果还是会存在重复,就是一个ZHKHYBT字段无论他是哪一天买的都只是一次,也就是说要讲jyrq和ZHKHYBT一同去重,我想外面套个distinct子查询来实现


你现在的sql是同一id每一天购买的次数,
就是一个ZHKHYBT字段无论他是哪一天买的都只是一次
你现在按日期分组了,上面的办不到,楼主先清晰一下思路吧

#1


>查询的结果中ZHKHYBT字段有重复的行
你并没有取出ZHKHYBT啊

原表中ZHKHYBT字段有重复数据需要筛选?
那筛选的原则是什么,你还是举例说明一下要求吧,情况全面一些,才好明白你想怎样

#2


引用 1 楼 Diza1986 的回复:
>查询的结果中ZHKHYBT字段有重复的行
你并没有取出ZHKHYBT啊

原表中ZHKHYBT字段有重复数据需要筛选?
那筛选的原则是什么,你还是举例说明一下要求吧,情况全面一些,才好明白你想怎样


我虽然没输出ZHKHYBT,但是我对这个字段做了控制,在该字段不为0的情况下才取得数,我刚刚将ZHKHYBT字段也输出时,发现该字段数据有一些数据是一样的,我就将这些相同的数据只算一条,然后再分组求和;

#3


完全相同的话distinct一下不就ok了,不清楚你的去重复是什么需求

#4


引用 3 楼 Diza1986 的回复:
完全相同的话distinct一下不就ok了 对查询结果的某个字段去重,不清楚你的去重复是什么需求


如图所示,我的ZHKHYBT对应的个数有1,2,4几种,我先想要的结果就是一个ZHKHYBT对应的count(*)只能为1,保证ZHKHYBT的唯一性,

#5


对ZHKHYBT字段进行去重,无论一个ZHKHYBT数据对应多少条信息,我都只算1个

#6


把count(*) 改成 count(distinct ZHKHYBT)

#7


引用 6 楼 Diza1986 的回复:
把count(*) 改成 count(distinct ZHKHYBT)


可能是我没说清楚,这样写的结果还是会存在重复,就是一个ZHKHYBT字段无论他是哪一天买的都只是一次,也就是说要讲jyrq和ZHKHYBT一同去重,我想外面套个distinct子查询来实现

#8


前面的其它字段 不重复,要一起的结果,咋能对ZHKHYBT去重.

#9


引用 7 楼 qq_36934345 的回复:
Quote: 引用 6 楼 Diza1986 的回复:

把count(*) 改成 count(distinct ZHKHYBT)


可能是我没说清楚,这样写的结果还是会存在重复,就是一个ZHKHYBT字段无论他是哪一天买的都只是一次,也就是说要讲jyrq和ZHKHYBT一同去重,我想外面套个distinct子查询来实现


你现在的sql是同一id每一天购买的次数,
就是一个ZHKHYBT字段无论他是哪一天买的都只是一次
你现在按日期分组了,上面的办不到,楼主先清晰一下思路吧