Postgres中的幽灵行

Postgres中的幽灵行

在我打电话给鬼魂杀手之前,我来这里是想试试技术的,哈哈,
嗯,我的Postgre数据库里有一个表,里面有284814条记录,我在找重复的记录,用这个语句

select grupo, empresa, filial, unidade, diferenciadornumero, serie, numero, count(numero)
from conhecimento
group by grupo, empresa, filial, unidade, diferenciadornumero, serie, numero
having count(numero) > 1

它还给了我五张唱片:
1;1;9;1;2;9;24712;2
1;1;9;1;2;9;24708;2
1;1;9;1;2;9;24711;2
1;1;9;1;2;9;24713;2
1;1;9;1;2;9;24709;2

在那之后,我试着一个接一个地查看这些记录,使用复合键带来记录,使用这个语句:
select grupo, empresa, filial, unidade, diferenciadornumero, serie,
       numero, ctid
from conhecimento
where grupo = 1 and empresa = 1 and
      filial = 9 and unidade = 1 and diferenciadornumero = 2 and serie = 9 and
      numero = 24712

让我惊讶的是,这个查询只返回一条记录,
1;1;9;1;2;9;24712;(7986,5)
所以,现在我试图理解Postgre如何告诉我这5条记录中有重复的记录,但是当我试图从表中恢复这些记录时,只返回一行,
我也用过这个查询
select *
from (SELECT grupo, empresa, filial, unidade, diferenciadornumero, serie, numero, ctid,
             ROW_NUMBER() OVER (PARTITION BY grupo, empresa, filial, unidade,
                                             diferenciadornumero, serie, numero
                               ) AS Row
      FROM conhecimento
     ) dups
where  dups.Row > 1

但是没有运气,有人知道怎么回事吗?
这是我钥匙的组成部分。我的桌子是grupo, empresa, filial ,unidade, diferenciadornumero, serie, numero
我的问候

最佳答案

这可能不是一个答案,但是。. .
代码:

select *
from (SELECT grupo, empresa, filial, unidade, diferenciadornumero, serie, numero, ctid,
             ROW_NUMBER() OVER (PARTITION BY grupo, empresa, filial, unidade,
                                             diferenciadornumero, serie, numero
                               ) AS Row
      FROM conhecimento
     ) dups
where  dups.Row > 1

只返回每个记录的第二个示例。你实际上并不想要row_number(),你想要count()
select *
from (SELECT grupo, empresa, filial, unidade, diferenciadornumero, serie, numero, ctid,
             count(*) OVER (PARTITION BY grupo, empresa, filial, unidade,
                                         diferenciadornumero, serie, numero
                           ) AS cnt
      FROM conhecimento
     ) dups
where  dups.cnt > 1;

关于sql - Postgres中的幽灵行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21263768/

10-09 04:46