单个 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

总行数 + 限制选择

html 限制textarea中的总行数和文本长度

在单个查询中选择总行数,总字段1 = 1,总字段1 = 0?

这是不是可以获得具有偏移限制的总行数

sql语句做分页查询时并统计符合查询条件的总行数