【问题标题】:PHP SQL Query to get the most common value in the tablePHP SQL Query 获取表中最常见的值
【发布时间】:2021-11-07 20:49:07
【问题描述】:

我试图让我的查询计算行数并让它返回该列表中最常见的名称,然后计算该名称出现的次数并输出名称及其出现的次数 这是我正在使用的代码:

$vvsql = "SELECT * FROM votes WHERE sid=? ORDER BY COUNT(*) DESC LIMIT 1";
$vvresult = $db->prepare($vvsql);
$vvresult->execute(array($_GET['id']));
$vvcount = $vvresult->rowCount();
    foreach ($vvresult->fetchAll(PDO::FETCH_ASSOC) as $row) { 
            echo $row['username'];
            echo $vvcount;
    }

但是,它只显示表格中的第一个用户名并计算整个表格。我对此很陌生,所以如果这是一个糟糕的帖子或者它没有多大意义,我很抱歉。

【问题讨论】:

  • 样本数据和期望的结果会有所帮助。
  • 我在投票表中有 3 行,2 行来自用户名 Test,1 行来自用户名 Test2。我想查询这个并让它找到最常见的用户名以及该用户名出现的次数。

标签: php sql pdo count


【解决方案1】:

你似乎想要:

SELECT name, COUNT(*) as cnt
FROM votes 
GROUP BY name
ORDER BY COUNT(*) DESC
LIMIT 1;

注意GROUP BY。您可能还想按sid 过滤,但您的问题没有提及。

【讨论】:

  • 这对大多数情况都有效,但是即使有两行用户名,它仍然只用 vvcount 计算 1
  • @Calbyy 如果您需要计数,则需要将其添加到查询中。 rowcount 也不会给你,聚合函数聚合,所以你只有 1 行。
【解决方案2】:
select username, count(*) as c 
FROM votes 
GROUP BY username 
ORDER BY c DESC

【讨论】:

  • 请解释一下这个代码/答案,以帮助 OP 和未来的用户。
  • 对不起,如果我听起来很笨,但是我如何用数字和用户名显示该计数(*)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 2023-04-10
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多