Tudo bem, eu sei que vai parecer gambiarra. E é isso mesmo ! Mas na hora do desespero o jeito é ‘chutar o pau da barraca’. Então, taí :
SELECT * FROM tabela t1 WHERE EXISTS ( SELECT * FROM tabela t2 WHERE t2.campo = t1.campo GROUP BY campo HAVING COUNT(*) > 1 ) ORDER BY lista de campos
Ou então:
SELECT * FROM tabela WHERE campo IN ( SELECT campo FROM tabela GROUP BY campo HAVING count(*) > 1) ORDER BY lista de campos
Isso já me salvou tantas vezes…
Siga-nos


October 20th, 2008 às 9:29 am
Se o seu banco de dados tiver suporte a sub-selects:
SELECT
campo_que_repete,
campo1,
campo2,
campo3
FROM
tabela tab1
WHERE (SELECT count(*)
FROM tabela tab2
WHERE tab2.campo_que_repete = tab1.campo_que_repete) > 1
Note que os alias tab1 e tab2 se referem a mesma tabela
[Responder]
October 20th, 2008 às 9:59 am
Valeu pela dica, Thiago.
[Responder]
April 15th, 2009 às 5:42 pm
select campo, count(*) from tabela group by campo having count(*) > 1
[Responder]
April 16th, 2009 às 7:44 am
Ótima dica, Mino
[Responder]
October 8th, 2009 às 8:55 am
Olá!! criei uma software para selecionar registros duplicados em tabelas SQl, atualmente funciona para Oracle, MYSQL,Postgre. ai tá o link do projeto no sourceforge https://sourceforge.net/projects/locatorduplicat/files/
Vinicius Oliveira
[Responder]
Edson Sguizzato
Reply:
October 8th, 2009 at 2:54 pm
Obrigado Vinicius.
[Responder]
July 13th, 2010 às 10:19 am
Ajudou muito, dica valiosa!
[Responder]
May 25th, 2011 às 6:51 pm
– Vejam este script que fiz para resolver um problema na empresa que trabalho
– Obter quantidade de registros repetidos em uma tabela Y
– Este scritp vai mostrar os registros duplicatos e a quantidade dos mesmos
– totalizando o total por periodo.
– Com base neste, vocês podem adaptar para usas necessidades do dia-a-dia.
SELECT campo data,campo 2,COUNT(campo 2)
FROM tabela Y
WHERE campo 2 IN (
SELECT DISTINCT(campo 2)
FROM tabela Y
WHERE campo 2 IN (
SELECT campo 2
FROM tabela Y
WHERE campo data >= TO_DATE(’26/05/11′)
AND campo data 1)
AND campo data >= TO_DATE(’26/05/11′)
AND campo data <= TO_DATE('27/05/11') )
GROUP BY ROLLUP(campo data,campo 2)
ORDER BY campo data,campo 2;
[Responder]
June 29th, 2011 às 3:51 pm
acabou de me salvar xDDDDDD
[Responder]