2010-02-08 16 views

risposta

72

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

Dice tornare un record a partire da record n.

+1

sembra aver fatto il trucco! Molte grazie – paulrandall

+4

L'ho modificato n, da 1 a n-1,1 perché l'offset inizia nel limite da 0 non 1.. Questa è una risposta accettata quindi fornire i dettagli corretti agli utenti. –

6

Utilizzare la clausola limite (aggiungere "limite 3, 1" alla fine della query per selezionare solo la terza riga).

Ecco qualche informazione in più: http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

+1

Sarebbe il limite 2, 1 perché è 0 indicizzato. – Loren

+0

grazie buona spiegazione –

25

La risposta accettata è sbagliato 1, l'offset è zero indicizzati:

Dal doc:

con due argomenti, il primo argomento specifica l'offset della riga iniziale da restituire e il secondo specifica il numero massimo di righe da restituire. Lo scostamento della riga iniziale è 0 (non 1):

SELECT * FROM tbl LIMIT 5,10; # recuperare le righe 6-15

Quindi la domanda corretta sarebbe

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

per correggerlo +1 –

3

ad esempio "LIMIT 10, 5", si salta il numero di record indicati dal primo numero e poi mostrare il numero di record indicati dal secondo numero. In altre parole è "LIMIT salta, mostra".

SELECT * FROM tblTesting LIMIT 3, 6 

visualizzerà dal 4 record a 9 registrare, record totali visualizzati 6

se si desidera mostrare ordine decrescente utilizzare DESC

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

spiegazione migliore della risposta (almeno per me ha più senso in questo contesto). – HPWD

0

Se si utilizza PHP per elaborare i record, quindi potresti usare le espressioni dal manuale 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); 
?> 

Leggi di più e nel manuale PHP: http://php.net/manual/en/mysqli-result.data-seek.php

0

MYSQL: L'offset sempre partire da zero-indicizzato

OFFSET valore non significa iniziare dal valore OFFSET

Esempio: record 1, 2, 3, 4, 5.

OFFSET 1 mezzi ritornano secondo valore, come offset 2 ritorno 3 ° valore e così via

SELEZIONA table_column FROM Tabella GROUP BY table_column DESC LIMIT 1 OFFSET 1;

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

Si tornerà 3 record 2 ° record di

Problemi correlati