Ik wil het 2e, of 3e of 4e record van een MySQL-query retourneren (gebaseerd op een zoekopdracht op ID oplopend)
Het probleem is dat ik de ID niet weet, alleen dat het de 3e rij in de zoekopdracht is.
Antwoord 1, autoriteit 100%
SELECT * FROM table ORDER BY ID LIMIT n-1,1
Er staat dat er één record moet worden geretourneerd vanaf record n.
Antwoord 2, autoriteit 31%
Het geaccepteerde antwoord was 1 fout vóór de bewerking, omdat de offset nul-geïndexeerdis.
Van de doc:
Bij twee argumenten specificeert het eerste argument de offset van de
eerste rij om terug te keren, en de tweede specificeert het maximum aantal
rijen om terug te keren. De offset van de eerste rij is 0 (niet 1):SELECTEER * VANAF LIMIET 5,10; # Haal rijen 6-15 op
Dus de juiste vraag zou zijn
SELECT * FROM table ORDER BY ID LIMIT n-1,1
Antwoord 3, autoriteit 7%
bijvoorbeeld “LIMIT 10, 5”, slaat het het aantal records dat wordt aangegeven door het eerste nummer over en toont vervolgens het aantal records dat wordt aangegeven door het tweede nummer. Met andere woorden, het is “LIMIT skip, show”.
SELECT * FROM tblTesting LIMIT 3, 6
wordt weergegeven van 4e record tot 9e record, totaal aantal records weergegeven 6
als u aflopende volgorde wilt weergeven, gebruik DESC
SELECT * FROM tblTesting ORDER BY column_name DESC LIMIT 3, 6
Antwoord 4, autoriteit 5%
Gebruik de limietclausule (voeg ‘limiet 3, 1’ toe aan het einde van uw zoekopdracht om alleen de derde rij te selecteren).
Hier is wat meer informatie: http://php.about.com/od /mysqlcommands/g/Limit_sql.htm
Antwoord 5, autoriteit 3%
MYSQL: de offset begint altijd vanaf nul-geïndexeerd
OFFSET-waarde betekent niet starten vanaf OFFSET-waarde
Voorbeeld: records 1, 2, 3, 4, 5.
OFFSET 1 betekent dat de 2e waarde wordt geretourneerd, omdat OFFSET 2 de 3e waarde retourneert, enzovoort
SELECT table_column FROM Table GROUP BY table_column DESC LIMIT 1 OFFSET 1;
OF
SELECT table_column FROM Table GROUP BY table_column DESC LIMIT 3 OFFSET 1;
Het levert 3 records op van het 2e record
Antwoord 6
Als je PHP gebruikt om je records te verwerken, dan kun je de uitdrukkingen uit de PHP-handleiding gebruiken:
<?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);
?>
Lees meer in de PHP-handleiding: http://php. net/manual/en/mysqli-result.data-seek.php