有没有办法为SELECT数据库查询指定起点?

时间:2013-01-02 04:58:15

标签: mysql sql database

我理解LIMIT的工作原理,但我想知道是否有办法在LIMIT之前设置数据库查询的起点。这可能吗?我对此有意义吗?

5 个答案:

答案 0 :(得分:5)

LIMIT接受两个值,即起点和持续时间。

更新1

答案 1 :(得分:4)

SELECT * FROM `table` LIMIT [offset], [count]

所以说你有4页(1,2,3和4),想要在每页显示10个结果,你可以这样做:

page_1(0 - 10)

SELECT * FROM `table` LIMIT  0, 10

page_2(10 - 20)

SELECT * FROM `table` LIMIT 10, 10

page_3(20 - 30)

SELECT * FROM `table` LIMIT 20, 10 

page_4(30 - 40)

SELECT * FROM `table` LIMIT 30, 10 

答案 2 :(得分:2)

SELECT * FROM MyTable LIMIT [startpoint], [row_count]

起点是可选的,默认为第一行。指定起点将跳过记录n次并从[startpoint]

开始计数
SELECT * FROM MyTable LIMIT 5, 15

这将显示从第5条记录开始的15条记录。

SELECT * FROM MyTable LIMIT 7相当于SELECT * FROM MyTable LIMIT 0,7

答案 3 :(得分:0)

我会给你一个从这里学习的演示

SELECT * FROM `your_table` LIMIT 0, 10 

这将显示数据库中的前10个结果。

答案 4 :(得分:0)

不确定我是否理解正确,但我会试一试。您可能希望在查询中使用变量绑定,这样就可以使用变量设置限制。使用以下PDO的代码示例:

class englishTable {
  private $selectAllWithLimit;

  public function __construct($db) {
    $this->selectWithLimit = $db->prepare('SELECT id, english, french FROM english LIMIT :start, :limit');

  public function selectWithLimit($start, $limit) {
    $this->selectWithLimit->bindValue(':start', $start, PDO::PARAM_INT );
    $this->selectWithLimit->bindValue(':limit', $limit, PDO::PARAM_INT );
    $this->selectWithLimit->execute();
    return $this->selectWithLimit->fetchAll();
  }
}

$start = 5;
$limit = 7;
$words = $englishTable->selectWithLimit($start, $limit);

希望这会有所帮助,新年快乐的朋友。