Pular para o conteúdo

Fóruns SQL e PL/SQL Deletar registros da tabela até ter X registros Deletar registros da tabela até ter X registros

#98563
fsitja
Participante

    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?