2010-02-08 23 views

Respuesta

72

SELECT * FROM table ORDER BY ID LIMIT n-1,1

Dice devolverá un registro de partida en el registro n.

+1

parece haber hecho el truco! Muchas gracias – paulrandall

+4

Lo he cambiado n, 1 a n-1,1 porque el desplazamiento comienza en el límite de 0 no 1. Como esta es una respuesta aceptada, proporcione los detalles correctos a los usuarios. –

6

Utilice la cláusula de límite (agregue 'límite 3, 1' al final de su consulta para seleccionar solo la tercera fila).

Aquí hay más información: http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

+1

Sería límite 2, 1 porque está indexado 0. – Loren

+0

gracias. Buena explicación –

25

La respuesta aceptada es erróneo por 1, el desplazamiento es indexada a cero:

Desde el doc:

con dos argumentos, el primer argumento especifica el desplazamiento de la primera fila para devolver, y el segundo especifica el número máximo de filas para devolver. El desplazamiento de la fila inicial es 0 (no 1):

SELECCIONE * FROM tbl LÍMITE 5,10; # recuperar filas 6-15

lo que la consulta correcta sería

SELECT * FROM table ORDER BY ID LIMIT n-1,1 
+1

para corregirlo +1 –

3

por ejemplo "límite de 10, 5", se saltará el número de registros indicados por el primer número y luego mostrar la número de registros indicado por el segundo número. En otras palabras, es "LIMIT skip, show".

SELECT * FROM tblTesting LIMIT 3, 6 

mostrará desde el 4 de registro al 9 de expediente, expedientes total mostrado 6

si desea mostrar orden descendente usar DESC

SELECT * FROM tblTesting ORDER BY column_name DESC LIMIT 3, 6 
+0

mejor explicación de la respuesta (al menos tenía más sentido para mí en este contexto). – HPWD

0

Si está usando PHP para procesar sus registros, a continuación, puede usar las expresiones del manual de PHP:

<?php 
/* Open a connection */ 
$link = mysqli_connect("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (!$link) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$query = "SELECT Name, CountryCode FROM City ORDER BY Name"; 

if ($result = mysqli_query($link, $query)) { 

    /* seek to row no. 400 */ 
    mysqli_data_seek($result, 399); 

    /* fetch row */ 
    $row = mysqli_fetch_row($result); 

    printf ("City: %s Countrycode: %s\n", $row[0], $row[1]); 

    /* free result set*/ 
    mysqli_free_result($result); 
} 

/* close connection */ 
mysqli_close($link); 
?> 

Leer más e en el manual de PHP: http://php.net/manual/en/mysqli-result.data-seek.php

0

MYSQL: El desplazamiento siempre empezar desde cero indexado

valor de desplazamiento significa no empezar de valor de desplazamiento

Ejemplo: registros 1, 2, 3, 4, 5.

OFFSET 1 medios de retorno segundo valor, como OFFSET 2 retorno tercera valor y así sucesivamente

table_column SELECT FROM Tabla GROUP BY LIMIT table_column DESC 1 OFFSET 1;

SELECCIONAR table_column FROM Table GROUP BY table_column DESC LIMIT 3 OFFSET 1;

Volverá 3 registros segundo récord

Cuestiones relacionadas