| Exibir mensagem anterior :: Exibir próxima mensagem | 
	
	
		| Autor | Mensagem | 
	
		| dbergkamps Novato
 
  
 
 Registrado: Sexta-Feira, 22 de Mai de 2020
 Mensagens: 34
 
 
 | 
			
				|  Enviada: Qui Jun 11, 2020 10:12 am    Assunto: Executar Update SQL comparando dados da mesma tabela |   |  
				| 
 |  
				| Olá pessoal, bom dia a todos! Tenho mais uma dúvida, pra variar rsrs...
 Estou executando um laço de repetição dentro da minha aplicação para atualizar campos de uma tabela em MySQL. Apesar de funcionar, a execução é meio lenta, pois envolve muitos registros.
 Gostaria de saber se existe uma forma de realizar essa atualização via SQL.
 Exemplo: Tenho a tabela abaixo.
 
 Eu preencho o campo Cor manualmente. Depois de preencher, eu queria atualizar via SQL, os campos vizinho1 e vizinho, com as cores da próxima linha.
 Se alguém puder ajudar, de já agradeço.
 Encontrei alguns exemplos, mas não consegui adaptar ainda pro que preciso.
 
  	  | Código: |  	  | cod   cor         vizinho1      vizinho2
 1   verde         vermelho      branco
 2   vermelho      branco         -
 3   branco         -         -
 
 | 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| imex Moderador
 
  
 
 Registrado: Sexta-Feira, 7 de Janeiro de 2011
 Mensagens: 11666
 
 
 | 
			
				|  Enviada: Qui Jun 11, 2020 3:06 pm    Assunto: |   |  
				| 
 |  
				| Boa tarde, 
 Não tenho experiência com o MySQL, não sei se é a melhor alternativa, mas segue uma sugestão para testes:
 
 
  	  | Código: |  	  | update Tabela as t inner join
 (
 select
 s.cod,
 (select v1.cor from Tabela as v1
 where v1.cod > s.cod
 order by v1.cod
 limit 1) as vizinho1,
 (select v2.cor from Tabela as v2
 where v2.cod > s.cod
 order by v2.cod
 limit 1 offset 1) as vizinho2
 from Tabela as s
 ) as j on j.cod = t.cod
 set t.Vizinho1 = j.Vizinho1, t.Vizinho2 = j.Vizinho2
 | 
 
 Espero que ajude
 
 Editado pela última vez por imex em Qui Set 16, 2021 8:57 am, num total de 1 vez
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| dbergkamps Novato
 
  
 
 Registrado: Sexta-Feira, 22 de Mai de 2020
 Mensagens: 34
 
 
 | 
			
				|  Enviada: Qui Jun 11, 2020 5:06 pm    Assunto: |   |  
				| 
 |  
				| Imex cara, q top! Deu certo. Muito obrigado mesmo!
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| dbergkamps Novato
 
  
 
 Registrado: Sexta-Feira, 22 de Mai de 2020
 Mensagens: 34
 
 
 | 
			
				|  Enviada: Sex Jun 26, 2020 8:16 pm    Assunto: |   |  
				| 
 |  
				| Reabrindo o tópico. O código funcionou perfeito no MySql. No SQLite, ele dá erro: 
  	  | Citação: |  	  | [20:12:30] Error while executing SQL query on database 'bd_catalog': near "inner": syntax error
 
 | 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| dbergkamps Novato
 
  
 
 Registrado: Sexta-Feira, 22 de Mai de 2020
 Mensagens: 34
 
 
 | 
			
				|  Enviada: Sex Jun 26, 2020 10:48 pm    Assunto: RESOLVIDO Executar Update SQL comparando dados da mesma |   |  
				| 
 |  
				| Consegui ajustar o código. segue
 
  	  | Código: |  	  | update candles
 set candles_mg1 = (select candles_direcao from candles pf
 where pf.candles_id > candles.candles_id
 order by pf.candles_id limit 1)
 
 | 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		|  |