【问题标题】:Php getting total amount of duplicate values from a SQL queryPHP 从 SQL 查询中获取重复值的总量
【发布时间】:2018-11-12 01:23:20
【问题描述】:

我有这个查询,它返回一个行列表以及它们重复的时间量,有一列 TotalCount :

SELECT X,
COUNT(*) as TotalCount
FROM table
GROUP BY X HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC

我在 PHPMyadmin 中执行这个查询:

[X] [TotalCount]
 A       5
 B       6

我尝试在我的脚本中包含查询,但下面给出了“2”:

echo $result->num_rows;

如何在 PHP 中获取“11”?

编辑:

我的查询是:

$sql="
    SELECT X,
    COUNT(*) as TotalCount
    FROM table
    GROUP BY X HAVING COUNT(*) > 1
    ORDER BY COUNT(*) DESC
    ";

$result = $conn->query($sql);
echo $result->num_rows;

我正在尝试做类似的事情

echo $row[TotalCount];

初始表是

[X]
A
A
A
A
A
B
B
B
B
B
B

【问题讨论】:

  • 你的桌子是什么样子的?
  • 如果我理解正确,当您在 phpmyadmin 中运行查询时,当您在 php 代码中插入查询时它工作正常,它只返回 2?
  • 你好,你必须把你实际使用的PHP代码...$result是什么,num_rows代表什么。
  • guradio 在 phpmyadmin 中运行良好,因为此查询创建了一个包含重复次数的列 TotalCount。但我不知道如何通过 PHP 得到这个“显示”
  • 我相信 $result 将包含您要查找的计数,numrows 是它的一个函数,它将返回 2 行,所以 php 不是问题。做一个 var_dump($result);你会看到数组

标签: php sql


【解决方案1】:

代码行为正确,它返回2,因为您有 2 行。您实际上想要这些行的值,因此您需要 fetch 结果对象。

$sql="
    SELECT X,
    COUNT(*) as TotalCount
    FROM table
    GROUP BY X HAVING COUNT(*) > 1
    ORDER BY COUNT(*) DESC
    ";
$result = $conn->query($sql);
while($row = $result->fetch_array())
{
     echo $row['TotalCount'] . PHP_EOL; // or '<br />' if in a browser;
}

【讨论】:

  • 很高兴为您提供帮助。您可以在 havingorder by 中使用 TotalCount 来代替 count(*)s。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 2020-04-24
  • 2022-01-14
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多