Update para arrumar sequencia de um campo q não é incremental

SQL Server

SQL

MySQL

Delphi

Firebird

02/08/2018

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

Edney Araujo

Curtidas 0

Respostas

Luiz Santos

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

GOSTEI 0
Edney Araujo

Edney Araujo

02/08/2018

Estou usando Firebird
GOSTEI 0
Edney Araujo

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


Estou usando Firebird
GOSTEI 0
Emerson Nascimento

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
GOSTEI 0
Emerson Nascimento

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
POSTAR