› Fóruns › SQL e PL/SQL › Deletar registros da tabela até ter X registros › Deletar registros da tabela até ter X registros
Olá,
Está um pouco estranho esse requisito, mas dá para fazer num comando só, sem PL/SQL.
DELETE FROM ecdr_t_cdr_despesa
WHERE ROWID IN
(SELECT ROWID
FROM (SELECT ROWID, row_number() over(ORDER BY 1) rn
FROM ecdr_t_cdr_despesa
WHERE data_hora_inicio BETWEEN &v_data_hora_inicio AND &v_data_hora_inicio + (1 / 24 - (1 / 86400))
AND indic_conciliado = 'N')
WHERE rn > 5000);
A questão é… como você escolhe quais registros vão “sobreviver” e quais serão deletados? Não importa quem são os 5000? Não tem uma ordem de prioridade para deletar primeiro quem tem valor mais baixo na coluna X ou maior na coluna Y?