单个 mysqli 查询语句来获取总行数和限制
Posted
技术标签:
【中文标题】单个 mysqli 查询语句来获取总行数和限制【英文标题】:Single mysqli query statement to get total number of rows and limit also 【发布时间】:2013-11-08 16:12:55 【问题描述】:我想获取 mysql 数据库表中的记录总数,并使用此限制。例如,有 100 行,假设我想使用的限制是 10。我知道如何使用两个查询来执行此操作,但我想一次性完成。
SELECT count(*) as total_rows FROM mytable; // gets the total count of rows
SELECT col1,col2 FROM mytable LIMIT 0, 10; // gets the 10 rows of col1,col2
我想一口气完成。任何的想法。 谢谢。
【问题讨论】:
你不能让它成为一个“去” 【参考方案1】:看看 Shayan Husaini 在How to get the total row count with MySQLi 上的回答
我自己尝试后更新了他的原始答案。您必须在查询中的 SELECT 之后添加“SQL_CALC_FOUND_ROWS”,并添加第二个查询,如下面的代码 sn-p 所示。
$sql1 = "SELECT SQL_CALC_FOUND_ROWS col1,col2 FROM mytable LIMIT 0, 10";
$sql2 = "SELECT FOUND_ROWS()";
$result1 = $conn->query($sql1);
$result2 = $conn->query($sql2);
$TotalRcount = $result2->fetch_row();
// I have added this next line to correct the answer
$TotalNumRows = $TotalRcount[0];
您可以像往常一样使用 $result1 来访问您的结果。
【讨论】:
【参考方案2】:这里是 SQL Fiddle,它演示了以下如何工作:
SELECT m.*,
(
SELECT COUNT(*)
FROM mytable AS sm
) AS TotalCount
FROM (
SELECT mt.col1, mt.col2
FROM mytable AS mt
LIMIT 0, 10
) AS m
【讨论】:
你可以并不意味着你应该。以上是关于单个 mysqli 查询语句来获取总行数和限制的主要内容,如果未能解决你的问题,请参考以下文章
在一个 mysqli 查询中给出年份、周数和工作日时返回 DATE