Consecutivo en un resultado SQL

JALF

Lanero Reconocido
Se unió
28 Feb 2007
Mensajes
977
Hola laneros,

Tengo una pequeña consulta, resulta que tengo una sentencia SQL

"SELECT nombre
FROM usuarios
ORDER BY nombre"

Y el resultado sería

+-----------
| Nombre
+-----------
| Julian
| Oscar
| Roberto
+-----------

En resumen la pregunta es, como puedo hacer para que aparezca un consecutivo al lado por medio del SQL

+----------------
| No | Nombre
+----------------
| 1 | Julian
| 2 | Oscar
| 3 | Roberto
+----------------

De antemano muchas gracias por el tiempo :) Salu2
 

jordia

Lanero Reconocido
Se unió
10 Dic 2004
Mensajes
107
te recomendaria que todas las tablas les crees un ID, propiedades de ser una llave y autoincrement. con eso solucionas dos problemas, ya que una tabla con ID es mas rapida y asi es como se debe de crear las tablas.
 

JALF

Lanero Reconocido
Se unió
28 Feb 2007
Mensajes
977
IDENTITY en PostgreSQL

Listo lo resolví jejejeje
Aquí les dejo la solución para quien le pueda servir. Resulta y acontece que trabajo en PostgreSQL y pues lo que me dice jordia es muy correcto y coherente pero mi pregunta es, ¿que pasa cuando hago una consulta multitabla y necesito enumerar el resultado? y que esta numeración sea desde 1 hasta el final?

Bueno, aqui les dejo la respuesta; reitero manejo PostgreSQL asi que me imagino que la idea podría ser exportada a cualquier otro motor de Bases de Datos:

Primero: Creo un secuencia llamada conteo
Código:
CREATE SEQUENCE conteo
   INCREMENT 1
   START 1
   MINVALUE 1
   MAXVALUE 999999999
   CACHE 1;

Segundo:
Creo mi consulta, la que sea utilizando esta secuencia en la primera columna; aquí les dejo la que hice de ejemplo:
Código:
SELECT nextval('conteo') AS no, serial, motor
    FROM (SELECT ref_serial AS serial, ref_motor AS motor
    FROM refrigeradores, ordenestrabajos
    WHERE ref_orden_trabajo = wo_id
    AND wo_id = $this->wo
    AND ref_motor <> '0'
    ORDER BY ref_serial) AS t1;

Tercero:
Reseteo la secuencia despues de haber sido utilizada para que en una proxima ves que la utilice, no me cuente desde el número en que quedó sino que me cuente otra ves desde 1 en adelante:
Código:
SELECT setval('conteo',1,false);
Y listo haciendo eso, puedo crear cualquier consulta multitabla y enumerar de 1 a donde sea, todos los resultados. Sé que en SQL Server hay una sentencia llamada IDENTITY pero en PostgreSQL no aplica dicha sentencia.
 
Arriba