gpt4 book ai didi

mysql - 顶级 MySQL 统计信息

转载 作者:行者123 更新时间:2023-11-29 13:42:43 30 4
gpt4 key购买 nike

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

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

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

num_rows = 900
distinct_col = 9
results = array()

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

编辑:我并不是在寻找正常的 mysql 统计信息,比如 num_rows 。但在某种情况下,假设您将结果限制为 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 返回其默认的行数,添加自定义结果可能就足够了。

最佳答案

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

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

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

仅此而已

I am mainly just trying to make sure I come up with the most logical and fastest method to get the required data.

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

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

关于mysql - 顶级 MySQL 统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17864022/

30 4 0
文章推荐: mysql - 选择最后已知的作业,但仅适用于最新的人
文章推荐: sql - 如果唯一 ID,如何编写 SQL 查询来计算第一次出现后 7 天出现包含不同 ID 的行的实例?
文章推荐: c# - dapper.contrib postres 42P01 错误 : relation "" does not exist