我试图让我的查询计数行,并让它返回该列表中最常见的名称,然后从中计算该名称出现的次数并输出该名称和次数这是我使用的代码:
$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;
}
但是,它只显示表中的第一个用户名,并对整个表进行计数。我对这个很陌生,所以如果这是一个不好的帖子,或者如果它没有多大意义,我很抱歉。
您似乎想要:
SELECT name, COUNT(*) as cnt
FROM votes
GROUP BY name
ORDER BY COUNT(*) DESC
LIMIT 1;
注意GROUP BY
。您可能还想通过sid
进行过滤,但您的问题没有提到这一点。
select username, count(*) as c
FROM votes
GROUP BY username
ORDER BY c DESC