Update para arrumar sequencia de um campo q não é incremental
Existe uma tabela com uma coluna chamada FOLHAS e essa coluna não auto incremento, preciso fazer um update para popular essa coluna de forma sequencial.
estou tentando o seguinte update....
update protestos
set folhas = 140+1
where instrument between 44640 and 44999
porem ele preenche 141 para todos os registro do between
estou tentando o seguinte update....
update protestos
set folhas = 140+1
where instrument between 44640 and 44999
porem ele preenche 141 para todos os registro do between
Edney Araujo
Curtidas 0
Respostas
Luiz Santos
02/08/2018
Cara, qual o banco que você está usando?
Pense assim quando vc coloca o WHERE como vc colocou, vc está pegando um bloco de dados.
Por isso ele joga o mesmo valor para o bloco todo.
A forma mais correta seria usar um CURSOR ou uma TABELA TEMPORÁRIA para resolver isso.
Se estiver usando uma linguagem como DELPHI, usar um RECORDSET.
Mas para te orientar melhor, preciso saber o que vc está usando exatamente.
Grande abs
Pense assim quando vc coloca o WHERE como vc colocou, vc está pegando um bloco de dados.
Por isso ele joga o mesmo valor para o bloco todo.
A forma mais correta seria usar um CURSOR ou uma TABELA TEMPORÁRIA para resolver isso.
Se estiver usando uma linguagem como DELPHI, usar um RECORDSET.
Mas para te orientar melhor, preciso saber o que vc está usando exatamente.
Grande abs
GOSTEI 0
Edney Araujo
02/08/2018
Estou usando Firebird
GOSTEI 0
Edney Araujo
02/08/2018
Cara, qual o banco que você está usando?
Pense assim quando vc coloca o WHERE como vc colocou, vc está pegando um bloco de dados.
Por isso ele joga o mesmo valor para o bloco todo.
A forma mais correta seria usar um CURSOR ou uma TABELA TEMPORÁRIA para resolver isso.
Se estiver usando uma linguagem como DELPHI, usar um RECORDSET.
Mas para te orientar melhor, preciso saber o que vc está usando exatamente.
Grande abs
Pense assim quando vc coloca o WHERE como vc colocou, vc está pegando um bloco de dados.
Por isso ele joga o mesmo valor para o bloco todo.
A forma mais correta seria usar um CURSOR ou uma TABELA TEMPORÁRIA para resolver isso.
Se estiver usando uma linguagem como DELPHI, usar um RECORDSET.
Mas para te orientar melhor, preciso saber o que vc está usando exatamente.
Grande abs
Estou usando Firebird
GOSTEI 0
Emerson Nascimento
02/08/2018
tente algo assim:
update protestos p1 set folhas = 140 + (select count(*) from protestos p2 where p2.instrument between 44640 and 44999 and p2.instrument < p1.instrument)
where p1.instrument between 44640 and 44999
update protestos p1 set folhas = 140 + (select count(*) from protestos p2 where p2.instrument between 44640 and 44999 and p2.instrument < p1.instrument)
where p1.instrument between 44640 and 44999
GOSTEI 0
Emerson Nascimento
02/08/2018
pra ficar como você solicitou:
update protestos p1 set folhas = 140 + (select count(*) from protestos p2 where p2.instrument between 44640 and 44999 and p2.instrument <= p1.instrument) where p1.instrument between 44640 and 44999
GOSTEI 0