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 |
|
|
|