Retourneer het n-de record van MySQL-query

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

Other episodes