【问题标题】:Get the most common value from MySQL column in PHP从 PHP 中的 MySQL 列中获取最常见的值
【发布时间】:2016-08-31 21:25:01
【问题描述】:

我在 phpmyadmin 中有一个简单的表,名为 name,只有 1 列 id,看起来像这样

      id
    --------
       a
       b
       a
       a
       a
       a
       b

现在我想在我的 PHP 页面上显示最常用的 id。 这是我的代码:

$sql_a = mysql_query(SELECT id FROM name WHERE id='a');
$count_a = mysql_num_rows($sql_a);
$sql_b = mysql_query(SELECT id FROM name WHERE id='b');
$count_b = mysql_num_rows($sql_b);

if($count_a > $count_b)
{
$most_used_id = "A";
}
else
{
$most_used_id = "B";
}
echo "<h1>MOST USED ID IS $most_used_id</h1>";

目前我只有 2 种类型的 id,但将来我会有多个(可能 300 多个)id,所以有没有办法使查询动态化并只获取最常用的值

【问题讨论】:

标签: php mysql


【解决方案1】:

那是非常多余的代码。你会更好

SELECT id, count(id) AS cnt
FROM name
ORDER BY cnt DESC
GROUP BY id
LIMIT 1

这将为您提供“最受欢迎”的 id 值,以及它的受欢迎程度。如果您需要获取所有 id 的计数,请删除 limit 行。

【讨论】:

  • 认为您也需要一个组 - count(id) 返回整个行数,而不是 id 的每个变体的总数:sqlfiddle.com/#!9/34c75d/4/0
  • @RobbieAverill: 是的,谢谢...这是漫长的一天。
  • 它显示错误警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在
  • @MarcB 它显示错误警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在
【解决方案2】:

尝试以下查询:

select id, count(id) cnt 
from name 
group by id 
order by cnt desc 
limit 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2011-10-27
    • 2017-11-08
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多