MySQL Limit Rows Ошибка - PullRequest
       10

MySQL Limit Rows Ошибка

3 голосов
/ 27 апреля 2011
SELECT * FROM `news` 
WHERE `deleted` = '0' 
ORDER BY `time` DESC 
LIMIT $START, $END

Когда LIMIT = 0,10 он загружается хорошо.
Когда LIMIT равен 10,20, он загружается хорошо.
Когда LIMIT равен 20,30, он загружает последние 4 строкиуже показано в 20,30 снова ...

Ответы [ 3 ]

11 голосов
/ 27 апреля 2011

То, как вы используете LIMIT, неверно.Это не

LIMIT <start> <end>

, а

LIMIT <offset> <number_of_rows>

Из документации MySQL ,

Первый аргумент задает смещениепервой строки для возврата, а вторая задает максимальное количество строк для возврата.

Так, например,

... LIMIT 0, 10 -- first 10 rows
... LIMIT 10, 10 -- rows 10-20
... LIMIT 10, 20 -- rows 10-30, not 10-20
... LIMIT 20, 30 -- rows 20-50, not 20-30

Если у вас недостаточно строк врезультирующий набор, чтобы заполнить предел, он просто вернется к последней строке.Например, если вы получите только 15 строк, ...LIMIT 10, 10 вернет строки 10-15.

0 голосов
/ 08 апреля 2015

Цитируется из http://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html:

SELECT ... FROM single_table ... ORDER BY non_index_column [DESC] LIMIT [M,] N;

Вернуть первые N строк из очереди. (Если указано M, пропустите первые M строк и возвращают следующие N строк.)

  • LIMIT 0, 10 - первые 10 строк, строки 1-10
  • LIMIT 10, 10 - строки 11-20
  • LIMIT 10, 20 - строки 11-30, а не 11-20
  • LIMIT 20, 30 - строки 21-50, а не 21-30
0 голосов
/ 27 апреля 2011

Первая выборка полных данных из БД с помощью SELECT SQL_CALC_FOUND_ROWS FROM [имя таблицы];возвращает общее количество;

использует переменную Three;

$ start $ end;$ total_records;

use ceil ($ total_records / $ start);Вы получите roundValue;используйте его предел

...