日安。
对于页面导航,通常需要使用两个查询: 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 -它不回答。
发布于 2014-04-25 13:43:07
如果您想知道查询中返回了多少行,同时仍然使用限制,则可以使用FOUND_ROWS()。
SELECT语句可以包含限制子句,以限制服务器返回给客户端的行数。在某些情况下,最好知道语句将返回多少行,不受限制,但不再次运行语句。要获得此行计数,请在SELECT语句中包含一个SQL_CALC_FOUND_ROWS选项,然后调用FOUND_ROWS():
$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上更轻,因为它实际上不需要运行您的主要查询两次。
发布于 2014-04-25 13:46:33
许多数据库API在访问结果集中的所有行之前都不会获取它们。
例如,使用Python的内置sqlite:
q = cursor.execute("SELECT * FROM somehwere")
row1 = q.fetchone()
row2 = q.fetchone()当然,库可以预取未知数目的行以提高性能。
https://stackoverflow.com/questions/23294831
复制相似问题