0

我有一个表,其中相同的数据一次又一次地出现,表结构如下所示。id 是自动增量。pm 是用户 ID。它会像 beliw 表一样一次又一次地出现。我想将输出显示为整个表的提取按降序排列。假设该表由 100 行组成,用户 ID 15 出现了 10 次,这是最高的,那么它应该排在最前面,然后是下一个类似的 ID。我试过但不在这里工作也是我的代码

id    userid
1      33
2      34
3      37
4      33 
5      33
6      37

我想要的输出是

     userid   nos
      33       3
      37       2
      34       1

请指导。我试过这段代码

$res = sql_query("select count(userid) as total from tableA");

echo'<table>';
while ($row = sql_fetch_array($res)) {
echo ' <tr><td>'.$row['userid'].'</td></tr></table>';
4

3 回答 3

3

您需要使用 GROUP BY 语句

SELECT userid, COUNT(userid) AS nos FROM tableA
    GROUP BY userid ORDER BY nos DESC;
于 2012-04-15T20:21:05.177 回答
2
SELECT userid, COUNT(userid) FROM tableA AS nos GROUP BY userid ORDER BY nos DESC

然后您可以访问:

$row['userid']对于用户 ID

$row['nos']为了计数

于 2012-04-15T20:19:57.640 回答
0

您的循环方法是错误的。

$res = sql_query("select userid, count(userid) as total from tableA group by userid order by total desc");
echo'<table>';
while ($row = sql_fetch_array($res)) {
  echo ' <tr><td>'.$row['userid'].'</td><td>'.$row['total'].'</td></tr>';
}
echo '</table>';
于 2012-04-15T20:21:54.473 回答