Amigos nuevamente acudo a ustedes a ver si me pueden ayudar a entender como 
funciona lo del limit y offset

 

Tengo la siguiente tabla


CREATE TABLE movcab
(
  movagecod character varying(3) NOT NULL, -- Codigo de la agencia
  movdoc character varying(2) NOT NULL, -- Codigo del documento
  movnum character varying(7) NOT NULL, -- Numero del documento
  movfec date, -- Fecha del documento
  CONSTRAINT movcab_pk PRIMARY KEY (movagecod, movdoc, movnum),
 
)

CREATE INDEX movcab_idx1
ON movcab  USING btree  (movfec);

 

Tengo algunos estos registros en la tabla registros en la tabla 

 

Cuando hago un select * from movdoc where order by movfec desc me muestra esto







movagecod
movdoc
movnum
movfec

10
IN
5
04/08/2010

10
EG
1
01/08/2010

10
EG
2
01/08/2010

10
IN
2
30/07/2010

10
IN
3
30/07/2010

10
IN
4
30/07/2010

10
IN
1
29/07/2010

20
EG
1
29/07/2010

10
TR
1
28/07/2010

20
IN
1
28/07/2010

 

 

Entonces quiero solo ir obteniendo de uno en uno desde el mas reciente hasta el 
mas antiguo, para lo cual uso el limity offset

 

Cuando hago un select * from movdoc where order by movfec desc limit 1 offset 0

Con esta consulta me retorne el documento IN numero 5

con esto select * from movdoc where order by movfec desc limit 1 offset 1 //me 
retorna el Eg numero 1

 

select * from movdoc where order by movfec desc limit 1 offset 3 me retorna el 
in numero 1 envez del in numero 2 que es el que me deberia retornar, 

 

y si sigo aumentando eloffset me da otros registros que no siguen el ordern que 
veo en la pantalla.

 

A que de puede deber este inconveniente voy a dar de loco jeje, no se porque no 
me muestra en el orden que se ve en pantalla, algo quisa con el indice o las 
llaves primarias.

 

He buscado informacion pero no encuentro nada que me de una pista de como 
funciona el offset para tratar de entender cual es el problema.

 

 

Saludos
                                          

Responder a