top row_number number iseries as400 database informix row-number

database - row_number - rownum db2 as400



NĂºmeros de fila para una consulta en informix (4)

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.

PD: es una respuesta aceptada de Experts Exchange .

Estoy usando la base de datos de informix, quiero una consulta que también podría generar un número de fila junto con la consulta

Me gusta

select row_number(),firstName,lastName from students; row_number() firstName lastName 1 john mathew 2 ricky pointing 3 sachin tendulkar

Aquí firstName, lastName son de la base de datos, donde se genera el número de fila en una consulta.


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 no tiene una columna SERIAL en su tabla fuente (que es una forma mejor de implementar esto como concepto general), eche un vistazo a CREATE SEQUENCE , que es más o menos el equivalente de una función Orrible que genera números únicos cuando se SELECCIONA desde (a diferencia de SERIAL, que genera el número único cuando la fila está INSERTADA).


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;


Dada una tabla llamada Table3 con 3 columnas:

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

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

Aquí está la consulta para devolver un número de Rown (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;