mysql查询计数和求和

时间:2012-04-15 20:17:40

标签: php mysql

我有一个表,其中相同的数据一次又一次出现,表结构如下所示.id是autoincrement.pm是for userid.it将一次又一次地出现像beliw table.i想要将输出显示为提取整个表的降序排列。假设该表由100行组成,并且用户标识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>';

3 个答案:

答案 0 :(得分:3)

您需要使用GROUP BY语句

SELECT userid, COUNT(userid) AS nos FROM tableA
    GROUP BY userid ORDER BY nos DESC;

答案 1 :(得分:2)

SELECT userid, COUNT(userid) FROM tableA AS nos GROUP BY userid ORDER BY nos DESC

然后你可以访问:

用户ID

$row['userid']

计数

$row['nos']

答案 2 :(得分: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>';