MySQL限制行错误

时间:2011-04-27 04:05:56

标签: php mysql limit offset

SELECT * FROM `news` 
WHERE `deleted` = '0' 
ORDER BY `time` DESC 
LIMIT $START, $END

LIMIT = 0,10时加载效果良好 当LIMIT10,20时,它会加载良好 当LIMIT20,30时,它会再次加载20,30中已显示的最后4行......

3 个答案:

答案 0 :(得分:11)

您使用LIMIT的方式不正确。不是,

LIMIT <start> <end>

而是

LIMIT <offset> <number_of_rows>

来自MySQL documentation

  

第一个参数指定   要返回的第一行的偏移量,和   第二个指定最大值   要返回的行数。

例如,

... 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行。)

  • LIMIT 0,10 - 前10行,1-10行
  • 限制10,10 - 行11-20
  • 限制10,20 - 行11-30,而不是11-20
  • 限制20,30 - 行21-50,而不是21-30

答案 2 :(得分:-2)

首先从DB获取完整数据 SELECT SQL_CALC_FOUND_ROWS FROM [table name]; 它返回总数;

使用三个变量;

$开始 $结束; $ total_records;

使用ceil($ total_records / $ start); 你会得到圆值; 使用限制