wake-up-neo.com

Wie kann ich Zeilen in MySQL ab einer bestimmten Zeilennummer auswählen?

Angenommen, ich habe 50 Zeilen in einer MySQL-Tabelle. Ich möchte die ersten zehn auswählen (LIMIT 10), aber dann möchte ich die nächsten zehn auf einer anderen Seite auswählen können.

Wie beginne ich meine Auswahl nach Zeile 10?

Aktualisierte Abfrage:

mysql_query("
    SELECT * FROM `picdb`
    WHERE `username` = '$username'
    ORDER BY `picid` DESC
    LIMIT '$start','$count'
")
33
mrpatg

Ich empfehle zu arbeiten, indem Sie die erste Seite aufrufen:

LIMIT 0, 10

dann für die zweite Seite

LIMIT 10, 10

dann

LIMIT 20, 10

für die dritte Seite und so weiter.

62
chaos
LIMIT 10

LIMIT 10 OFFSET 10

Aus den MySQL 5.1-Dokumenten zur SELECT-Syntax :

Zur Kompatibilität mit PostgreSQL MySQL unterstützt auch die LIMIT Versatzsyntax für row_count OFFSET.

28
Karl Voigtland

Diese Frage ist alt, aber ich möchte nur einen Code hinzufügen, der nicht hartcodiert ist. Die Antwort, die das Chaos gegeben hat, bedeutet, dass Sie Ihre Skripts hartcodieren müssen (Select-Anweisung). Sie können die gleichen Ergebnisse erzielen, indem Sie den Dateinamen abrufen und dann Daten aus der Datenbank basierend auf der aktuellen Seite auswählen, ohne Ihre select-Anweisung zu kodieren. Zuerst muss die aktuelle Seite abgerufen werden

$page = basename($_SERVER['SCRIPT_FILENAME']);
$page_counter = rtrim($page, ".php");
//setting your limit
$start = 0;
$limit = 10;
//if current page is not index.php then $start = ($limit * page_counter); 
// e.g if current page is 1.php then $start = ($limit * 1) = 10
//if current page is 2.php then $start = ($limit * 2) = 20
if ($page !== 'index.php') {

 $start = ($limit * $page_counter);
}
//getting row count
$ROW_COUNT = $db->query('SELECT * from tableName')->rowCount();

//getting number of rows left in the table
$rows_left = ("SELECT * FROM tableName limit ?,?");
$rows_left = $db->prepare($rows_left);
$rows_left->execute(array($start,$ROW_COUNT));
$rows = $rows_left->fetchAll(PDO::FETCH_ASSOC);

$number_rows = 0;
foreach ($rows as $r) {
 $number_rows = $number_rows + 1;
 }
 //if number of rows left in the table is less than 10 then $limit = the number of rows left
 if ($number_rows < 10) {
 $limit = $number_rows;
 }

 //getting all rows
            $getRows = "SELECT * FROM tableName limit ?,?";
            $getRows = $db->prepare($getRows);
            $getRows->execute(array($start , $limit));
            $getRows = $getRows->fetchAll(PDO::FETCH_ASSOC);
1
TenTen Peter
select * from 'table_name' 
ORDER BY 'column_id 'DESC 
LIMIT 0,10;

select * from 'table_name' 
ORDER BY 'column_id' DESC 
LIMIT 10,10;

select * from 'table_name' 
ORDER BY 'column_id' DESC
LIMIT 20,10;

und fahren Sie bis zu den gewünschten Nummern fort.

0
Sachin Prasad