[firebase-br] Update nos 3500 primeiros registros

paulosxs Yahoo! paulosxs em yahoo.com.br
Seg Ago 20 18:48:13 -03 2007


Devemos considerar que o select será verificado para CADA UM dos 
registros da tabela onde V.Coligada = 13. A condição I.Codigo = V.Codigo 
garante que qualquer registro constará em cada verificação do select. 
Portanto, o exists será verdadeiro para todos. Talvez o problema esteja 
na condição I.Codigo = V.Codigo. Você disse que quer "fazer o update 
apenas nos 3500 primeiros". Mas, nos 3500 primeiros considerando que 
ordem e que condições?

Enquanto isso, experimente:

UPDATE veiculo 
   SET dtultalteracao = CURRENT_TIMESTAMP - 1
      where 
         codigo in 
            (SELECT FIRST 3500 i.codigo
               FROM veiculo i
                  WHERE i.coligada = 13
                  ORDER BY i.codigo) ;



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