SELECT * FROM `news`
WHERE `deleted` = '0'
ORDER BY `time` DESC
LIMIT $START, $END
LIMIT
= 0,10
时加载效果良好
当LIMIT
为10,20
时,它会加载良好
当LIMIT
为20,30
时,它会再次加载20,30
中已显示的最后4行......
答案 0 :(得分:11)
您使用LIMIT
的方式不正确。不是,
LIMIT <start> <end>
而是
LIMIT <offset> <number_of_rows>
第一个参数指定 要返回的第一行的偏移量,和 第二个指定最大值 要返回的行数。
例如,
... 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行。
答案 1 :(得分:0)
引自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行。)
答案 2 :(得分:-2)
首先从DB获取完整数据 SELECT SQL_CALC_FOUND_ROWS FROM [table name]; 它返回总数;
使用三个变量;
$开始 $结束; $ total_records;
使用ceil($ total_records / $ start); 你会得到圆值; 使用限制