VERIFICAR CPFS DUPLICADOS

FUTURA 01/11/2011 10:54:09
#388252
preciso criar um select que me traga codigo,nome e cpf, mas somente dos registros com cpfs duplicados, tem como ?
NETMANIA 01/11/2011 11:24:53
#388253
Segue exemplo:

SELECT
cpf,
COUNT(cpf) AS quantidade
FROM
cliente
GROUP BY
cpf
HAVING
COUNT(cpf) > 1
FUTURA 01/11/2011 11:36:16
#388254
seria isso, mas com codigo e nome tbem...
NETMANIA 01/11/2011 11:46:05
#388255
Resposta escolhida
Você pode passar a estrutura da tabela que monto o SQL adequando a suas necessidades
FUTURA 01/11/2011 11:53:46
#388256
são esse 3 campos, codigo,nome,cpf onde apenas os q estão com cpf duplicados devem ser selecionados..
AJSO 01/11/2011 12:20:11
#388258
Caro FUTURA,


SELECT DISTINCT [ô]Lista de Campos a Visualizar[ô] FROM Tabela

WHERE [ô]Campo De Busca[ô] In

(SELECT [ô]Campo De Busca[ô] FROM Tabela As Resultado

GROUP BY [ô]Campo De Busca[ô] HAVING Count(*) > 1 )

ORDER BY [ô]Campo De Busca[ô]

este é bem simples basta substituir no seu SELECT as STRING contendo seus campos de necessidade e filtro Esta estrutura serve para SQL SERVER, MYSQL PostgreSql, Oracle, DB2, FireBird, etc....

Boa Sorte...
FFCOUTO 01/11/2011 14:02:00
#388273
AJSO,

Creio que não há necessidade da sub-query, bastava uma consulta simples, veja abaixo:

SELECT codigo, nome, cpf  FROM clientes
GROUP BY nome, cpf, codigo
HAVING COUNT(cpf) > 1;


Espero ter ajudado.
FUTURA 01/11/2011 14:24:24
#388274
então couto, ja ja havia testado assim, mas ai não retorna nada...
AJSO 01/11/2011 14:42:25
#388276
Caro FFCOUTO
Citação:

:
AJSO,

Creio que não há necessidade da sub-query, bastava uma consulta simples, veja abaixo:

SELECT codigo, nome, cpf  FROM clientes
GROUP BY nome, cpf, codigo
HAVING COUNT(cpf) > 1;


Espero ter ajudado.



Se vc não indicar um parâmetro no filtro de sua SELECT principal este resultado de trazer apenas CPF repetidos não funciona......

é necessário na sua SELECT principal o uso do DISTINCT e de uma SUBQUERY para filtro da tabela e trazer todos os registros cujo campo CPF duplicados[ô]

sevc não adicionar uma clausula WHERE em sua consulta verá que não traz apenas os resultados do campo CPF duplicados.......

Como seria a consulta

SELECT DISTINCT codigo, nome, cpf FROM clientes

WHERE cpf In (SELECT cpf FROM clientes As Resultado

GROUP BY cpf HAVING Count(*) > 1 )

ORDER BY codigo

Dentro do SQL Query tem a Exibição do [Ô]Plano de Execução Estimado[Ô]
ele faz uma estimativa quanto ao uso de cluster no Servidor onde encontra-se o Banco

Traz o consumo em memória desta consulta e Clustered Index Scan que é o consumo real.....
Isso pode fazer a diferença em sua consulta no banco vale apenas testar para seu select ser oneroso ou não ao banco de dados....
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
FFCOUTO essa sua consulta funciona se vc trazer apenas os cpf duplicados ou seja:

[Ô]apenas sua HAVING COUNT(cpf) seja maior que zero[Ô]

SELECT codigo, nome, cpf FROM clientes
GROUP BY nome, cpf, codigo
HAVING COUNT(cpf) > 0;


Na sua COUNT(cpf) seja maior que zero, atenção seu nivel de resolução de INDICES será muito alta pois vc não esta usando clausulas WHERE para
resolver sua consulta.................................
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++





boa sorte
FFCOUTO 01/11/2011 16:39:51
#388295
AJSO,

Realmente faltou apenas o DISTINCT para mostrar somente uma linha de cada registro repetido.

Mas quanto a COUNT(cpf) > 0 você se engana, pois neste todos serão mostrado uma vez que o GROUP BY irá agrupar todos. Quando indico COUNT(cpf) > 1 significa que há duplicidade no cpf, pois a consultar só vai mostrar quando houver 2. Faço dessa forma e obtenho resposta quase instantânea.

Não posso afirmar categoricamente, mas o uso do COUNT(*) deva consumir mais recurso que o COUNT(campo_específico).

Para o amigo FUTURA, faça um teste: cria uma tabela e adiciona 2 cpf iguais e execute a consulta para ver se não retorna o registro.

FUTURA 01/11/2011 17:04:39
#388299
amigos, todos ajudaram....eu usei o exemplo do netmania q trouxe exatamente a contagem de cada um duplicado...grato a todos...
Tópico encerrado , respostas não são mais permitidas