From: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
---|---|
To: | Arturo Munive <arturomunive(at)gmail(dot)com> |
Cc: | usuario anonimo <opinante(dot)anonimo(at)gmail(dot)com>, Postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: asignar valor creciente |
Date: | 2007-06-15 14:25:27 |
Message-ID: | 4672A157.9070004@soft-com.es |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Arturo Munive escribió:
>
> prueba=# select * from codigos;
> codigo | orden
> --------+-------
> 547 |
> 459 |
> 248 |
> 925 |
> 247 |
> 425 |
> (6 rows)
>
>
> pero quisiera que tenga algo asi
>
> codigo | orden
> --------+-------
> 247 | 1
> 248 | 2
> 425 | 3
> 459 | 4
> 547 | 5
> 925 | 6
> (6 rows)
>
> es decir como ordenar la tabla antes de la actualización?, por que
> cuando en estos datos uso lo que me recomendaste entonces
> coloca la secuencia pero no en los códigos ordenados, es decir la
> secuencia de los números debe quedar acorde al código ordenado
> ascendentemente.
Hace algun tiempo tuve una necesidad parecida y lo resolvi mas o menos asi (Ojo no esta probado):
update codigos set ordern = (select count(*) from codigos as c2 where codigos.codigo < c2.codigo) + 1;
La idea es que para cada valor de codigo cuente cuantos hay menores y le asigne este valor + 1 (En
caso de que el orden empieze por 1).
Con tablas no muy grandes funcionará bien, si son muy grandes puede tardar un poco ;)
Suerte.
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
From | Date | Subject | |
---|---|---|---|
Next Message | Patricio Cifuentes Ithal | 2007-06-15 14:30:16 | RE: Postgres and Mapserver timeout |
Previous Message | Arturo Munive | 2007-06-15 13:41:36 | Re: asignar valor creciente |