Ir ao conteúdo
  • Cadastre-se
juniorarruda

MySQL sql delete no mysql

Recommended Posts

Pessoal,

Devido a um erro de configuração em um rastreador veicular ele enviou muitas posições para minha plataforma de rastreamento portanto queria fazer uma limpeza no meu banco mas sem excluir tudo, eu queria que a cada 6 registros excluir 5 e deixar 1. O problema ocorreu da id 16171 até 19499. Como faço essa SQL?

Muito obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

juniorarruda, exiba um trecho dos seus dados e explique melhor o seu critério para exclusão.

 

Do ID 16171 até o 19499 tem 3329 registros. Você quer excluir 2663 desses registros, é isso? Mas qual o critério? Serão excluídos os 2663 registros mais antigos entre os ID's citados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erciley, aí está um trecho, o nome da tabela é positions. O critério é esse mesmo, a cada 6 registros excluir 5 e deixar 1. Porque esses dados me mostram na api do google um caminho que o veículo percorreu mas com muitos detalhes, eu gostaria de continuar exibindo o caminho completo na plataforma porém com menos registros que já é o suficiente para mim. Ou seja, eu gostaria de excluir do 16171 até o 16175(os 5 a ser excluídos) e pular o registro 16176( o registro a ser deixado) depois excluir do 16177 até o 16181(5 a serem excluídos) e pular o 16182(o registro a ser deixado) e assim por diante até o 19499.

 

 

image.thumb.png.a25ccf8e938afac4de13f16ce4796442.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi @juniorarruda . 

 

Dessa forma, não vejo outra maneira a não ser criar uma PROCEDURE para fazer isso. =/

 

Caso queira uma ajuda na procedure, dá um alô.

 

Agora se quiser um DELETE direto, creio que só teria como excluir os últimos registros, (de 10 mil registros no range passado, excluiria os 7500 mais velhos, por exemplo).

Compartilhar este post


Link para o post
Compartilhar em outros sites

@juniorarruda , faz o teste, mas acho que nem precisa de PROCEDURE viu.

 

É só fazer um DELETE usando a função matemática MOD (que em mysql é %).

 

Testei e deu certo, faz um teste.

 

DELETE FROM positions WHERE ID BETWEEN 1 AND 20 AND ( (ID % 6) != 0);

Criei os seguintes dados para testar:

 

CREATE TEMPORARY TABLE positions (ID INT PRIMARY KEY AUTO_INCREMENT,NOME VARCHAR(03));

INSERT INTO positions (NOME) VALUES ('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO'),('ECO');

 

Caso queira a PROCEDURE, me avise que faço rapidão aqui pra você dar uma olhada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, tá na mão a procedure também.

 

veja o que prefere. dá uma lida para entender.

 

veja que criei uma tabela positions com 1000 registros apenas para eu poder testar.

 

remova o código desnecessário.

 

drop temporary table if exists positions;

create temporary table positions (id int primary key auto_increment,nome varchar(03)) engine=myisam;

insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');
insert into positions (nome) values ('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco'),('eco');

drop procedure if exists proc_removeregistros;

delimiter $$

create procedure proc_removeregistros(nid_inicial int,nid_final int,nremove int)
begin

   declare ncontador int;
   declare latualizou bool;

   set ncontador:=0;

   set nid_inicial:=nid_inicial-1;

   my_while: while (true) do
      begin
         set nid_inicial:=nid_inicial+1;

         if (nid_inicial > nid_final) then
            begin
               leave my_while;
            end;
         end if;

         if (ncontador = nremove) then
            begin
               set ncontador:=0;
               iterate my_while;
            end;
         end if;

         delete from positions where id = nid_inicial;

         set latualizou:=row_count() > 0;

         if (latualizou) then
            begin
               set ncontador:=ncontador+1;
            end;
         end if;
      end;
   end while;
end$$

delimiter ;

call proc_removeregistros(1,1000,5);

select * from positions;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×