如何检索许多元素的第n组

时间:2015-07-22 07:32:39

标签: php sql mysqli

我发现要从数据库$x中选择有限数量的元素,我可以使用

$sql="SELECT * FROM user ORDER BY id LIMIT $x";

因此,如果$ x = 10,此查询将从数据库中检索前10个元素。

但是如何检索第n个$x元素?

例如,如果$n=5$x=20我要检索20个元素,这样20个元素就是数据库中的第5个20个元素,本例中的元素是80 - 100个元素数据库无论是什么ID。

enter image description here

我该怎么做?

4 个答案:

答案 0 :(得分:1)

$m = $n-1;

$start = $m*$x;

$sql="SELECT * FROM user ORDER BY id LIMIT $start, $x";

答案 1 :(得分:1)

SELECT * FROM user ORDER BY id LIMIT 80,20

答案 2 :(得分:1)

<?php
    $entriesPerPage = 20; // Amount of results shown per page
    $activePage     = 5;  // The active page

    $offset = ($activePage - 1) * $entriesPerPage;
    $sql    = "SELECT * FROM `user` ORDER BY `id` LIMIT $offset, $entriesPerPage";
    // ...
?>

答案 3 :(得分:0)

假设我们希望从名为“Orders”的表中选择1 - 30(含)的所有记录。 SQL查询将如下所示:

$sql = "SELECT * FROM Orders LIMIT 30";

当运行上面的SQL查询时,它将返回前30条记录。

如果我们想选择16 - 25(含)的记录怎么办?

Mysql还提供了一种处理方法:使用OFFSET。

下面的SQL查询说“只返回10条记录,从记录16开始(OFFSET 15)”:

$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

您还可以使用更短的语法来实现相同的结果:

$sql = "SELECT * FROM Orders LIMIT 15, 10";

请注意,使用逗号时数字会反转。
参考:Click here