VERIFICAR CPFS DUPLICADOS
preciso criar um select que me traga codigo,nome e cpf, mas somente dos registros com cpfs duplicados, tem como ?
Segue exemplo:
SELECT
cpf,
COUNT(cpf) AS quantidade
FROM
cliente
GROUP BY
cpf
HAVING
COUNT(cpf) > 1
SELECT
cpf,
COUNT(cpf) AS quantidade
FROM
cliente
GROUP BY
cpf
HAVING
COUNT(cpf) > 1
seria isso, mas com codigo e nome tbem...
Você pode passar a estrutura da tabela que monto o SQL adequando a suas necessidades
são esse 3 campos, codigo,nome,cpf onde apenas os q estão com cpf duplicados devem ser selecionados..
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...
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...
AJSO,
Creio que não há necessidade da sub-query, bastava uma consulta simples, veja abaixo:
Espero ter ajudado.
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.
então couto, ja ja havia testado assim, mas ai não retorna nada...
Caro FFCOUTO
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
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
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.
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.
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