Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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
)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...Essa po$$$$@ é macumba...rs...feito...perfeito...
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
)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
)
http://www.devmedia.com.br/deletar-dados-duplicados-em-uma-tabela-oracle/4632