locked
Pegar só os registros que não aparecem num select com distinct RRS feed

  • Pergunta

  • Olá amigos.
    Gostaria de uma sugestão de como pegar só os registros que não aparecem num select com distinct e com vários campos.
    Preciso disso pois estou tentando criar uma Constraint Unique em uma tabela com vários campos, e de 2500 registros existem 2 repitidos.

    Agradeço pela atenção.
    Abs.
    Fabiano

    terça-feira, 1 de março de 2011 15:39

Respostas

  • Boa tarde Fabiano.
    Se te entendi bem, você quer verificar qual é o teu registro duplicado, correto?

    SELECT CHAVE, COUNT (*)
    FROM TABELA
    GROUP BY CHAVE
    HAVING COUNT (*) > 1

    Onde chave é a coluna (ou conjunto de colunas) que vai fazer parte da sia constraint.


    Abraços, Weslley Moura MCP - MCTS - ORA SqlExpert
    • Marcado como Resposta Fabiano Nalin terça-feira, 1 de março de 2011 15:52
    terça-feira, 1 de março de 2011 15:45
  • Olá Fabiano.

    Quando isso acontece costumo pegar pelo group by. No final da select coloco o count(*)

    Espero ter ajudado.

    []'s

    • Marcado como Resposta Fabiano Nalin terça-feira, 1 de março de 2011 15:52
    terça-feira, 1 de março de 2011 15:45

Todas as Respostas

  • Boa tarde Fabiano.
    Se te entendi bem, você quer verificar qual é o teu registro duplicado, correto?

    SELECT CHAVE, COUNT (*)
    FROM TABELA
    GROUP BY CHAVE
    HAVING COUNT (*) > 1

    Onde chave é a coluna (ou conjunto de colunas) que vai fazer parte da sia constraint.


    Abraços, Weslley Moura MCP - MCTS - ORA SqlExpert
    • Marcado como Resposta Fabiano Nalin terça-feira, 1 de março de 2011 15:52
    terça-feira, 1 de março de 2011 15:45
  • Olá Fabiano.

    Quando isso acontece costumo pegar pelo group by. No final da select coloco o count(*)

    Espero ter ajudado.

    []'s

    • Marcado como Resposta Fabiano Nalin terça-feira, 1 de março de 2011 15:52
    terça-feira, 1 de março de 2011 15:45
  • Olá Patricio, fiz o que me sugeriu e deu certo. Abaixo o Select que utilizei:
    SELECT NQuestPI,IREmbarc,EspecieProd,Medida,Situação,Origem, COUNT(*) FROM Fiscalizacao_IMP.dbo.TbProdutosInterceptados
     GROUP BY NQuestPI,IREmbarc,EspecieProd,Medida,Situação,Origem
     HAVING COUNT(*)>1

    Obrigado a todos.

    []´s

    terça-feira, 1 de março de 2011 15:52
  • Fabiano Nalin,

     

    Use o Group By , para agrupar o campo que você deseja e assim faça um count com having.

     

    Utilize:

     

    SELECT campo, count(*) AS qtd

    FROM tabela

    GROUP BY campo

    HAVING Count(*) > 1

     

    O que acontece:

     

    o campo nesse caso é aonde você acha que esses dados possam estar repetidos, se tiver mais campo, não esqueça de colocar os mesmos campos no GROUP BY

     


    Luan.Moreno MCP || MTA ||MCTS SQL Server 2005 Blog: http://luanmorenodba.wordpress.com Twitter: @luansql Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 1 de março de 2011 15:56