Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Morpheus#2005

Exclusão de registros duplicados usando Max

Recommended Posts

Pessoal, me surgiu uma dúvida..

 

Eu preciso realizar um delete mas somete poderá ficar o registro que tiver a menor data.

 

Exemplo :

 

 

Data Dado

01-09-2013 Fabiano

01-08-2013 Fabiano

01-08-2013 Fabiano

01-06-2013 Fabiano

01-06-2013 Fabiano

 

A saída teria que ser:

 

Data Dado

01-06-2013 Fabiano

 

 

Excluindo todos os outros.

 

Eu fiz isso :

 

 

 

Delete From tabela where
(data,dado) in
(
Select max(data),dado
From Mailling
Group by data,dado
)
Mas ele exclui tudo...
Obrigado pela ajuda.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mestre motta, mas como eu incluo o para ele deixar somente a primeira data...

 

Exemplo :

 

01/02/2013

05/03/2013

01/02/2013

 

Teria que ficar somente o 01/02..

 

 

 

DELETE FROM
mailling A
WHERE
ROWID > (
SELECT
min(rowid)
FROM
mailling B
WHERE
A.num_acesso = B.num_acesso
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que falte a data na "chave"

 

 

DELETE FROM    

    mailling A    
WHERE    
    ROWID > (   
        SELECT    
            min(rowid)    
        FROM    
            mailling B    
        WHERE    
            A.num_acesso = B.num_acesso

        AND 

           A.data = B.data

        )

teste antes , faça duas salvas antes de rodar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Motta, percebi que é preciso primeiro organizar a data em ordem decrescente para que ela seja excluida usando o metodo acima...pois o rowid cria um ID VIRTUAL linha a linha, tem outra forma?

 

Segue code :

 

 

DELETE FROM
mailling A
WHERE
ROWID > (
SELECT
min(rowid)
FROM
mailling B
WHERE
A.num_acesso = B.num_acesso
AND
A.data_TROCA = B.data_TROCA
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi ...

 

...mas talvez para preservar os mais recentes tenha de trocar a llógica (maior menor min max)

 

 

DELETE FROM    

    mailling A    
WHERE    
    ROWID < (   

        SELECT    
            max(rowid)    

        FROM    
            mailling B    
        WHERE    
            A.num_acesso = B.num_acesso
        AND 


           A.data_TROCA = B.data_TROCA


        )

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.