Osvaldo Kussama wrote:
> 
> 
> 
> Evandro Ricardo Silvestre wrote:
>> 
>> Saudações a todos,
>> 
>> Preciso fazer uma procedure que irá varrer uma determinada tabela e 
>> procurar pelo primeiro número vago.
>> Por exemplo: tenho 1,2,3,4,6,7,8. A rotina deverá retornar o 5.
>> Estou pensando em fazer um laço do primeiro ao ultimo, mas isso será 
>> muito custoso a longo prazo (hoje a tabela tem 5000 registro).
>> 
>> Existe alguma rotina no banco que faça isso? Ou alguém tem uma idéia 
>> mais inteligente que a minha?
>> 
>> 
> 
> Tente:
> SELECT seu_num FROM sua_tabela
> EXCEPT
> SELECT * FROM generate_series(1,(SELECT max(seu_num) FROM sua_tabela));
> 
> Osvaldo
> PS. Nao testado.
> 
> 

Ops!

SELECT * FROM generate_series(1,(SELECT max(seu_num) FROM sua_tabela))
EXCEPT
SELECT seu_num FROM sua_tabela;

Isto vai listar todos os numeros faltantes.
Para pegar so' o primeiro:


SELECT min(seu_num) 
           FROM (SELECT * FROM generate_series(1,(SELECT max(seu_num) FROM
sua_tabela))
                       EXCEPT
                       SELECT seu_num FROM sua_tabela) AS foo;

Osvaldo

-- 
View this message in context: 
http://www.nabble.com/Pr%C3%B3ximo-n%C3%BAmero-Vago-tp15163409p15164613.html
Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a