Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal assim.. vi na internet como achar valores duplicados em uma tabela legal ok.
Inseri um cara exatamente igual a outro aqui da minha tabela, porém como excluir um cara duplicado? não tem exatamente um filtro na clausula where que eu possa usar pra deletar.
Tentei usar Rownum mas não está dando muito certo! alguém pode me ajudar?
MAXIMO QUE SAIU FOI ISSO.
DECLARE
CURSOR RED IS
SELECT ROWNUM QUANT
FROM EMP;
BEGIN
FOR I IN RED LOOP
IF I.QUANT = 15 THEN
DELETE EMP
WHERE ROWNUM <15;
END IF;
END LOOP;
END;
VALEUUUU
ATT.
>
--DUPLICADOS
SELECT CAMPO
FROM TABELA
GROUP BY CAMPO
HAVING COUNT(*) > 1
--SELECINANDO
SELECT CAMPO,ROWID
FROM TABELA
WHERE CAMPO IN (SELECT CAMPO
FROM TABELA
GROUP BY CAMPO
HAVING COUNT(*) > 1)
--BLOCO PARA DELETAR
DECLARE
VCAMPOANT TABELA.CAMPO%TYPE;
BEGIN
VCAMPOANT := ' ';
FOR R IN (SELECT CAMPO,ROWID
FROM TABELA
WHERE CAMPO IN (SELECT CAMPO
FROM TABELA
GROUP BY CAMPO
HAVING COUNT(*) > 1)
ORDER BY 1,2)
LOOP
IF VCAMPOANT = R.CAMPO THEN
DELETE TABELA WHERE ROWID = R.ROWID;
END IF;
VCAMPOANT = R.CAMPO;
END LOOP;
END;
--------------
Faz uma salva antes e testa pois foi escrito no notepad, sem teste.
Perfeito MOTTA funcionou direitinho! quando eu crescer eu vou ser que nem você auhsuhuhsuhashuas Bye valeu \o
Só rindo ...
--DUPLICADOS
SELECT CAMPO
FROM TABELA
GROUP BY CAMPO
HAVING COUNT(*) > 1
--SELECINANDO
SELECT CAMPO,ROWID
FROM TABELA
--BLOCO PARA DELETAR
DECLARE
VCAMPOANT TABELA.CAMPO%TYPE;
BEGIN
--------------
Faz uma salva antes e testa pois foi escrito no notepad, sem teste.