From: | "manuel lamas" <manuel3w(at)hotmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Determinar la linea que falta |
Date: | 2006-05-09 14:51:16 |
Message-ID: | BAY103-F1100CCD863E1AB3A5A794295A90@phx.gbl |
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
>>
Gracias Linder y Cuenca por la ayuda.
Cuenca tu le diste bien a lo que yo busco y pregunto un poco mas:
Hay alguna forma elegante de hacer con un solo UPDATE para que la columna C1
se siga sin agujeros.
Por ejemplo:
El original
>>SELECT * FROM T1;
>>c1
>>----
>> 1
>> 2
>> 4
>> 5
>>(4 rows)
Lo que busco
>>SELECT * FROM T1;
>>c1
>>----
>> 1
>> 2
>> 3
>> 4
>>(4 rows)
Muchas gracias por su valioso tiempo.
Manuel
From | Date | Subject | |
---|---|---|---|
Next Message | Webmaster Dbrunas | 2006-05-09 18:49:25 | Conferencia postgreSQL a cargo de Álvaro Herrera |
Previous Message | Alvaro Herrera | 2006-05-09 14:27:08 | Re: UPDATES |