[firebase-br] Update nos 3500 primeiros registros

Edson de Paulo epaulo2002 em yahoo.com.br
Ter Ago 21 08:37:51 -03 2007


Olá Paulo

	Assim como você o Fabio me deu a mesma sugestão. A cláusula order by na 
minha sub-query você pode ignorar, mas já rodei o update do jeito que 
você sugeriu e o resultado é o mesmo, ele faz updade em todos os 7500 
registros, estou gerando um arquivo texto, e queria apenas separar em 
dois arquivos com 3.500 registros no máximo, independente da ordem, 
apenas que seja coligada = 13.
	Me parece que o FIRST dentro de um sub-query não surge efeito e se eu 
executar a sub-query apenas ela me retorna os 3500.

	Já procurei na documentação, nos livros mas não encontro um exemplo 
deste update. Estou usando a versão 2.0 do FireBird.

Obrigado assim mesmo.

-- 
Edson de Paulo
Curitiba - PR





Edson de Paulo escreveu:
> Alguém sabe me explicar o motivo dos updates abaixo não terem funcionado?
> Tenho 7500 registros de acordo com o meu Where
> 
> Quero fazer um update apenas nos 3500 primeiros registros que ele achar. 
> E nas duas formas abaixo ele setou os 7500.
> 
> 
> UPDATE veiculo v
> SET v.dtultalteracao = CURRENT_TIMESTAMP - 1
> WHERE v.coligada = 13
>    AND EXISTS (SELECT FIRST 3500 i.codigo
>                FROM veiculo i
>                WHERE i.coligada = 13
>                  AND i.codigo   = v.codigo
>                ORDER BY v.codigo DESC);
> 
> ou
> 
> UPDATE veiculo v
> SET v.dtultalteracao = CURRENT_TIMESTAMP - 1
> WHERE v.coligada = 13
>    AND v.codigo IN  (SELECT FIRST 3500 i.codigo
>                      FROM veiculo i
>                      WHERE i.coligada = 13
>                     ORDER BY v.codigo DESC);
> 
> 






Mais detalhes sobre a lista de discussão lista