Re: Determinar la linea que falta

From: Cuenca <yeidel(dot)cuenca(at)facinf(dot)uho(dot)edu(dot)cu>
To: "manuel lamas" <manuel3w(at)hotmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Determinar la linea que falta
Date: 2006-05-09 03:33:21
Message-ID: op.s89lhvmefc3tfs@proyecto5
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Mon, 08 May 2006 17:30:58 -0400, manuel lamas <manuel3w(at)hotmail(dot)com>
wrote:

> Hola lista,
>
> Digamos que tengo una tabla así:
>
> CREATE TABLE T1 (c1 int NOT NULL);
>
> INSERT INTO T1(c1)VALUES(1);
> INSERT INTO T1(c1)VALUES(2);
> INSERT INTO T1(c1)VALUES(4);
> INSERT INTO T1(c1)VALUES(5);
>
>
> SELECT * FROM T1;
> c1
> ----
> 1
> 2
> 4
> 5
> (4 rows)
>
> Me gustaría obtener el numero faltante de c1, o sea el numero 3 para
> poder hacer un insert.
>
> Encontré una manera de hacerlo pero me parece poco elegante. Si alguien
> tiene una solución me serviría mucho.

si quieres encontrar el primer valor que falta en la secuencia puedes usar
lo siguiente:

select min(c1+1) as id from t1 where c1+1 not in (select c1 from t1)

en tu caso devolveria 3, si la secuencia esta completa devuelve el proximo
valor de la secuencia es decir en la tuya 6. Si quieres todos lo valores
que faltan elimina la funcion min(). debes tener en cuenta ademas que si
esta vacia la tabla entonces devuelve NULL
no se si es lo que buscabas pero espero que te sirva de algo.. Cuenca
>
> Gracias de antemano
> Manuel
>
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 9: el optimizador ignorará el uso de recorridos de índice si los
> tipos de datos de las columnas no coinciden

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Luis Echeverria 2006-05-09 03:36:23 que "locale" debo usar ??
Previous Message Alvaro Herrera 2006-05-08 21:55:52 Re: Tabla Corrupta...