May 22

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…

Bytes relacionados :


9 bytes to “Como selecionar registros duplicados em uma tabela SQL”

  1. 1. ThiagoNo Gravatar disse:

    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]

  2. 2. Kellsens WillamosNo Gravatar disse:

    Valeu pela dica, Thiago.

    [Responder]

  3. 3. MinoNo Gravatar disse:

    select campo, count(*) from tabela group by campo having count(*) > 1

    [Responder]

  4. 4. Kellsens WillamosNo Gravatar disse:

    Ótima dica, Mino

    [Responder]

  5. 5. Vinicius OliveiraNo Gravatar disse:

    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 SguizzatoNo Gravatar Reply:

    Obrigado Vinicius.

    [Responder]

  6. 6. DiogoNo Gravatar disse:

    Ajudou muito, dica valiosa!

    [Responder]

  7. 7. Lourival Jr.No Gravatar disse:

    – 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]

  8. 8. Ricardo PinguimNo Gravatar disse:

    acabou de me salvar xDDDDDD

    [Responder]

Deixe aqui seus bytes