Подтвердить что ты не робот

Как выбрать строки в MySQL, начиная с определенного номера строки?

Скажем, у меня есть 50 строк в таблице MySQL. Я хочу выбрать первую десятку (LIMIT 10), но затем я хочу, чтобы выбрать следующие 10 на другой странице.

Итак, как мне начать мой выбор после строки 10?

Обновленный запрос:

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

Ответ 1

Я рекомендую работать, получив первую страницу, используя:

LIMIT 0, 10

то для второй страницы

LIMIT 10, 10

затем

LIMIT 20, 10

для третьей страницы и т.д.

Ответ 2

LIMIT 10

LIMIT 10 OFFSET 10

Из MySQL 5.1 docs в синтаксисе SELECT:

Для совместимости с PostgreSQL, MySQL также поддерживает LIMIT Синтаксис смещения row_count OFFSET.

Ответ 3

Этот вопрос старый, но я просто хочу добавить код, который не является жестко запрограммированным, хаос, предоставленный для ответа, означает, что вам придется жестко кодировать свои скрипты (Select statement). вы можете добиться тех же результатов, получив имя файла, а затем выберите данные из базы данных на основе текущей страницы, без жесткого кодирования вашего оператора select. сначала получите текущую страницу

$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);

Ответ 4

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;

и продолжайте до нужных цифр.