首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql真的从结果中得到行吗?

问Mysql真的从结果中得到行吗?
EN

Stack Overflow用户
提问于 2014-04-25 13:39:48
回答 2查看 54关注 0票数 0

日安。

对于页面导航,通常需要使用两个查询: 1) $res = mysql_query("SELECT * FROM Table");

-获取上一页和下一页链接的所有计数行的查询,例如<- 2 3 4 5 6 ->)

2) $res = mysql_query("SELECT * FROM Table LIMIT 20, $num"); // where $num - count rows for page

请告诉我,请只使用一个数据库查询,以便在上一页和下一页上建立链接( <- 2 3 4 5 6 -> )和从页面输出行(sql有限制)?

p.s.:我知道可以使用两个查询和SELECT * FROM Table LIMIT 20 -它不回答。

EN

回答 2

Stack Overflow用户

发布于 2014-04-25 13:43:07

如果您想知道查询中返回了多少行,同时仍然使用限制,则可以使用FOUND_ROWS()。

SELECT语句可以包含限制子句,以限制服务器返回给客户端的行数。在某些情况下,最好知道语句将返回多少行,不受限制,但不再次运行语句。要获得此行计数,请在SELECT语句中包含一个SQL_CALC_FOUND_ROWS选项,然后调用FOUND_ROWS():

代码语言:javascript
复制
$res = mysql_query("SELECT SQL_CALC_FOUND_ROWS, * FROM Table");
$count_result = mysql_query("SELECT FOUND_ROWS() AS found_rows");
$rows = mysql_fetch_assoc($rows);
$total_rows = $rows['found_rows'];

这仍然是两个查询(这是不可避免的),但在DB上更轻,因为它实际上不需要运行您的主要查询两次。

票数 4
EN

Stack Overflow用户

发布于 2014-04-25 13:46:33

许多数据库API在访问结果集中的所有行之前都不会获取它们。

例如,使用Python的内置sqlite:

代码语言:javascript
复制
q = cursor.execute("SELECT * FROM somehwere")

row1 = q.fetchone()
row2 = q.fetchone()

当然,库可以预取未知数目的行以提高性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23294831

复制
相关文章

相似问题

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