2008-09-23 19 views
5

que estoy usando la base de datos Informix, quiero una consulta que también se podría generar un número de fila, junto con la consultaLos números de fila para una consulta en Informix

Como

select row_number(),firstName,lastName 
from students; 

row_number() firstName lastName 
1   john  mathew 
2   ricky  pointing 
3   sachin tendulkar 

Aquí nombre, apellido son de Base de datos, donde se genera el número de fila en una consulta.

+0

Es cortés para seleccionar una respuesta - o si no está respondiendo a su pregunta, es conveniente para editar su pregunta para que pueda ser entendido. Deberías intentar seleccionar una mejor respuesta, por favor. –

Respuesta

1

Creo que la manera más fácil sería usar el siguiente código y ajustar su retorno en consecuencia. SELECCIONAR rowid, * FROM table

Funciona para mí, pero tenga en cuenta que devolverá el número de fila en la base de datos, no el número de fila en la consulta.

P.S. es una respuesta aceptada de Experts Exchange.

+1

No se puede ver la "respuesta aceptada" sin una suscripción, lo que, aunque sea gratis, es al menos una molestia. –

2

Es posible que no pueda usar ROWID en una tabla fragmentada en varios DBSpaces, por lo que cualquier solución que use ROWID no es particularmente portátil. También es fuertemente desaconsejado.

Si usted no tiene una columna de serie en su tabla de origen (que es una mejor forma de implementar esto como un concepto general), echar un vistazo a CREATE SEQUENCE, que es más o menos el equivalente a una función Orrible que genera números únicos cuando se SELECCIONA (en oposición a SERIAL, que genera el número único cuando la fila está INSERTADA).

+0

a nota: SERIAL en ifx (al menos) 9, 10 y 11 no es exclusivo por defecto. Volverá a 1. – hometoast

6

La mejor manera es usar una secuencia (recién inicializada).

begin work; 
create sequence myseq; 
select myseq.nextval,s.firstName,s.lastName from students s; 
drop sequence myseq; 
commit work; 
2

Dada una tabla denominada Tabla 3 con 3 columnas:

colnum name datatype 
======= ===== === 
1  no  text; 
2  seq number; 
3  nm  text; 

NOTA: SEC es un campo dentro de la tabla que tiene valores únicos en orden ascendente. Los números no tienen que ser contiguos.

Aquí es consulta para devolver un rownumber (ROWNUM) junto con el resultado de la consulta

SELECT table3.no, table3.seq, Table3.nm, 
     (SELECT COUNT(*) FROM Table3 AS Temp 
     WHERE Temp.seq < Table3.seq) + 1 AS RowNum 
    FROM Table3; 
+0

El formateo aquí deja algo que desear. Para obtener material de ejemplo de ancho constante, sangría cosas como la línea 'tipo de datos de nombre coln' sangrada con 4 espacios en blanco. Deje el texto sin formato sangrado menos. –

Cuestiones relacionadas