IT其它Db2

db2 except数据错误?

使用except查询表中数据重复部分数据,sql大致如下:全表查询except全表查询group by全字段having count(1)>1查出来的结果数据会比真实数据多(查询字段顺序跟数据库中字段顺序不一致)表数据量千万级,20个字段左右。一次表中有两条数据重复,查出结果50多条。全表查询和分组筛...显示全部

使用except查询表中数据重复部分数据,sql大致如下:
全表查询
except
全表查询
group by全字段
having count(1)>1
查出来的结果数据会比真实数据多(查询字段顺序跟数据库中字段顺序不一致)
表数据量千万级,20个字段左右。
一次表中有两条数据重复,查出结果50多条。
全表查询和分组筛选查询结果都是正确的,加上except后数据量就变
什么原因

收起
参与10

返回liveonsky的回答

liveonskyliveonsky数据库开发工程师sr

1.except是两个查询差异的数据,会去重,如上描述having count(1)>1会去掉重复的数据,比较的结果为所有非重复的数据

2.表中数据重复,没有实际主键,是否有业务主键,都没有只能全字段分组了

银行 · 2018-09-13
  • 表中目前没有实际主键,主数据诊断,挑选出来所有重复的数据(不去重)。 “1.except是两个查询差异的数据,会去重,如上描述having count(1)>1会去掉重复的数据,比较的结果为所有非重复的数据” :但是实际结果包含了不重复的数据 比如表test a b c 1 2 3 1 2 2 1 2 3 1 1 1 比如数据我想要的结果是 1 2 3 1 2 3 但是 select a,b,c from test except select a,b,c fromm test group a,b,c having count(1)>1; 的结果是 1 2 3 1 2 3 1 2 2。 结果一般来说是正常的,我对58张表做该操作,有3张表出现类是问题。(我觉得可能跟我另一个问题有关,字段太长,查询的时候有时好报错sql404n 22001)
    2018-09-28
  • liveonsky  liveonsky回复 冰玉
    有可能,having count(1)>1,按理结果为1 2 2 1 1 1 1 2 3 属于重复的数据会被滤掉。
    2018-09-29

回答者

liveonsky
数据库开发工程师sr

liveonsky 最近回答过的问题

回答状态

  • 发布时间:2018-09-13
  • 关注会员:2 人
  • 回答浏览:2785
  • X社区推广