0

无法找到有关此的任何信息,我可以自己执行此操作,但我觉得将其保留在查询中可能是最好的选择,如果可能的话。

基本上我想尝试添加查询的顶级“统计”部分。

所以当我得到结果时,我会看到这样

num_rows = 900
distinct_col = 9
results = array()

这样我可以正常循环结果,然后提取我只需要一次的信息。这可能吗?

编辑:我不是在寻找像 num_rows 这样的正常 mysql 统计信息。但是在假设您将结果限制为 10 的情况下,num_rows 将返回 10,但您想要总结果,因此为 900。在大多数情况下,我只会使用另一个查询并仅查找数量,但是将它们全部合并为一个对我来说,查询逻辑上似乎更快。我可能需要的不仅仅是 num_rows,比如它们都是产品并且有一个特定的类别,我需要计算所有项目所属的类别数量。因此,当这些列只有一个结果时循环原始结果是愚蠢的。

编辑 2:为了进一步澄清,我需要对某些列进行一些计数,并可能在连接时获得最小-最大结果。让它在每个循环上都返回会起作用,但是当它只需要一次时,相同的确切返回在每个循环上无用地返回似乎不合逻辑。我不是 MySQL 专家,主要只是想确保我想出最合乎逻辑和最快的方法来获取所需的数据。

这是一个 PHP 返回示例:

array(
  [num_rows] => 900,
  [categories] => 9,
  [min_price] => 400,
  [max_price] => 900,
  [results] => array(
   [0] => //row array
   [1] -> //row array
  )
);

在您“获取”结果之前,Mysql 返回其默认的 num 行,在此处添加自定义结果可能就足够了。

4

1 回答 1

1

不知道为什么你需要那个,但这很容易得到

假设您使用的是safeMysql(尽管您可以使用任何方式将数据放入数组)

$results = $db->getAll("SELECT * FROM t");
$num_rows = count($results);
$num_cols = count($results[0]);

就这样

我主要只是想确保我想出最合乎逻辑和最快的方法来获取所需的数据。

是的,你是。
在每个循环中获取聚合数据并没有错。

至于超出 LIMITs 的计数 - 当您需要时,您可以使用 mysql 的 SQL_CALC_FOUND_ROWS / FOUND_ROWS() 功能

于 2013-07-25T16:54:38.037 回答