MySQL - 如何分页?

时间:2011-10-21 21:41:16

标签: mysql

鉴于一些记录,如何查询以下内容:

  1. 前10条记录,接下来的10条记录等?
  2. 最后10条记录,第二条到最后10条记录等?

6 个答案:

答案 0 :(得分:2)

LIMIT是您想要的http://dev.mysql.com/doc/refman/5.1/en/select.html

前10:

SELECT * FROM TABLE LIMIT 10;

第二个10:

SELECT * FROM TABLE LIMIT 10,10;

第三名10:

SELECT * FROM TABLE LIMIT 20,10;

“最后10个”只有在订购行时才有意义。在这种情况下,您反转订单,并使用上面列出的第一个语句取前10。如果你想要“倒数第二个”,那么你对逆转的顺序做同样的事情,然后使用上面的第二个声明。

希望有所帮助!

答案 1 :(得分:0)

使用LIMIT子句

  • 前10条记录

    ... LIMIT 10
    
  • 接下来的10条记录

    ... LIMIT 10, 10
    

在应用程序中与COUNT()查询结合使用可以查找总行数。然后,您可以使用此数字和每页所需行数来构建分页。

答案 2 :(得分:0)

我相信您可以使用LIMIT和OFFSET以及ORDER BY来完成此任务。 http://dev.mysql.com/doc/refman/5.0/en/select.html

答案 3 :(得分:0)

使用 LIMIT 条款。

例子如下:

/** First 10 records **/
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 10; 
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 0,10; 
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 10 OFFSET 0; 

/** The records 11-20 **/
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 10, 10; 

/** The records 101-110 **/
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 100, 10; 
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 10 OFFSET 100; 

/** The last 10 records (in reverse order than previous queries) **/
SELECT * FROM `table` ORDER BY SomeColumn DESC LIMIT 10; 
SELECT * FROM `table` ORDER BY SomeColumn DESC LIMIT 10 OFFSET 10; 

答案 4 :(得分:0)

一个解决方案可能是在查询中使用限制0,9

从表中选择*,其中id< 50限制0,9

然后你把一些按钮增加/减少你的限制

答案 5 :(得分:0)

PHP代码:

$limit = 10;
$page = 1;


$from = ( $page - 1 ) * $limit;
$SQL = "SELECT * FROM `table` LIMIT $from,$limit";