首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中选择从给定行号开始的行?

问如何在MySQL中选择从给定行号开始的行?
EN

Stack Overflow用户
提问于 2009-08-10 00:26:17
回答 4查看 79.2K关注 0票数 43

假设我在一个MySQL表中有50行。我想要选择前10个(LIMIT 10),然后我希望能够在不同的页面上选择下10个。

那么在第10行之后,我该如何开始选择呢?

更新的查询:

代码语言:javascript
复制
mysql_query("
    SELECT * FROM `picdb`
    WHERE `username` = '$username'
    ORDER BY `picid` DESC
    LIMIT '$start','$count'
")
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-10 00:26:57

我建议使用以下命令获取第一页:

代码语言:javascript
复制
LIMIT 0, 10

然后是第二页

代码语言:javascript
复制
LIMIT 10, 10

然后

代码语言:javascript
复制
LIMIT 20, 10

第三页,以此类推。

票数 76
EN

Stack Overflow用户

发布于 2009-08-10 00:31:36

代码语言:javascript
复制
LIMIT 10

LIMIT 10 OFFSET 10

从MySQL 5.1 docs on SELECT syntax

为了与PostgreSQL兼容,MySQL还支持LIMIT row_count OFFSET语法。

票数 29
EN

Stack Overflow用户

发布于 2014-07-23 09:48:36

这个问题很老了,但我只想添加一个没有硬编码的代码,chaos给出的答案意味着你必须硬编码你的脚本(Select语句)。您可以通过获取文件名,然后根据当前页从数据库中选择数据来实现相同的结果,而无需对select语句进行硬编码。首先获取当前页面

代码语言:javascript
复制
$page = basename($_SERVER['SCRIPT_FILENAME']);
$page_counter = rtrim($page, ".php");
//setting your limit
$start = 0;
$limit = 10;
//if current page is not index.php then $start = ($limit * page_counter); 
// e.g if current page is 1.php then $start = ($limit * 1) = 10
//if current page is 2.php then $start = ($limit * 2) = 20
if ($page !== 'index.php') {

 $start = ($limit * $page_counter);
}
//getting row count
$ROW_COUNT = $db->query('SELECT * from tableName')->rowCount();

//getting number of rows left in the table
$rows_left = ("SELECT * FROM tableName limit ?,?");
$rows_left = $db->prepare($rows_left);
$rows_left->execute(array($start,$ROW_COUNT));
$rows = $rows_left->fetchAll(PDO::FETCH_ASSOC);

$number_rows = 0;
foreach ($rows as $r) {
 $number_rows = $number_rows + 1;
 }
 //if number of rows left in the table is less than 10 then $limit = the number of rows left
 if ($number_rows < 10) {
 $limit = $number_rows;
 }

 //getting all rows
            $getRows = "SELECT * FROM tableName limit ?,?";
            $getRows = $db->prepare($getRows);
            $getRows->execute(array($start , $limit));
            $getRows = $getRows->fetchAll(PDO::FETCH_ASSOC);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1252673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档