2011-04-29 34 views
9

tengo una lista que muestra solo 10 filas.seleccionar siguiente/anterior 10 filas en mysql

necesito seleccionar las 10 filas siguientes y 10 anteriores. sin embargo, los ID que uso como referencia no están exactamente en orden. (por ejemplo, 1,2,5,10,15). ¿Cómo selecciono las siguientes filas usando la ID?

Respuesta

22

puede probar límite:

select * from `table` limit <startIndex>,<NumberOfRecords>; 

ejemplo: -

select * from `user` limit 5,10; 

Esto devolverá 10 filas a partir de sexta fila.

+0

es el índice de inicio de la ID? ¿Qué uso para referencia? – tep

+0

gracias, ¿cómo obtengo el índice de inicio (número de fila)? lo siento, todavía nuevo en mysql. – tep

+0

@tep: si tiene identificaciones secuenciales en la columna, proporcione el id como rowNumber. –

-1

Puede usar límite palabra clave de MySQL.

1
(
SELECT * 
FROM mytable 
WHERE id < $myid 
ORDER BY 
     id DESC 
LIMIT 10 
) 
UNION ALL 
(
SELECT * 
FROM mytable 
WHERE id >= $myid 
ORDER BY 
     id 
LIMIT 10 
) 
ORDER BY 
     id 
+0

im usando una consulta similar a esta. sin embargo, el problema que estoy teniendo es con la identificación. algunas filas se muestran de forma repetida. – tep

3

una consulta sería posible

SELECT * FROM mytable WHERE id > current_id LIMIT 10 

para el 10 anterior

SELECT * FROM mytable WHERE id < current_id ORDER BY id DESC LIMIT 10 
+0

hola, estoy usando una consulta similar a esta. sin embargo, ¿cómo puedo actualizar la ID para que cuando el usuario vuelva a hacer clic en siguiente, las 10 filas siguientes se muestren nuevamente. – tep

+0

este es el mejor con ajax;) –

+0

¿No confía en que el ID siempre se obtenga de forma secuencial para que esto funcione? De acuerdo, debería ser así, pero siempre existe la posibilidad de que se haya eliminado una fila, por lo que los siguientes 10 identificadores no necesariamente serán los 10 números siguientes. sin la lógica para saber qué ID finalizaste con la ejecución anterior, podrías terminar con resultados duplicados. – Brian

0

Primero seleccione 10 primer valor:

SELECT * FROM `leave_type` ORDER BY id asc limit 10; 

y luego

select * from `leave_type` limit 10, 10; 

mostrará las filas después del 10mo valor (rango de 10) y comenzará con el 11mo.

Cuestiones relacionadas