Sto cercando di tornare il 2, o 3 °, 4 ° o record da una query MySQL (sulla base di una query ID ascendente)Restituire l'ennesimo record da query MySQL
Il problema è, io non so l'ID, solo che è la terza riga nella query.
Sto cercando di tornare il 2, o 3 °, 4 ° o record da una query MySQL (sulla base di una query ID ascendente)Restituire l'ennesimo record da query MySQL
Il problema è, io non so l'ID, solo che è la terza riga nella query.
SELECT * FROM table ORDER BY ID LIMIT n-1,1
Dice tornare un record a partire da record n.
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
Sarebbe il limite 2, 1 perché è 0 indicizzato. – Loren
grazie buona spiegazione –
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
per correggerlo +1 –
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
spiegazione migliore della risposta (almeno per me ha più senso in questo contesto). – HPWD
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
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
sembra aver fatto il trucco! Molte grazie – paulrandall
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. –