MySql计数在表的列中重复

时间:2016-05-16 14:06:27

标签: php mysql

我有一个名为telco的表,其中包含2列,id(PK)telco_prov。我想计算telco_prov列中的重复记录,然后显示它出现的次数。

telco表示例:

id    telco_prov
1     Smart
2     Smart
3     Globe
4     Globe
5     Globe

这是我的代码:

    $query = "select telco_prov, count(*) c from telco group by telco_prov having c > 1";
    $result = mysql_query($query) or die('Error: '.mysql_error ());
    $row = mysql_fetch_assoc($result);

    echo "SMART: <font color= 'red'>".$row['c']."</font>";
    echo "<br>GLOBE: <font color= 'red'>".$row['c']."</font>";

代码没有错误,但它没有正确计数。

上述代码的结果:

SMART: 2
GLOBE: 2

但它应该是:

SMART: 2
GLOBE: 3

我已经尝试在查询中添加where语句,但它仍然无效。

$query = "select telco_prov, count(*) c from telco where telco_prov = 'Smart' group by telco_prov having c > 1";

非常感谢您的帮助。谢谢!

3 个答案:

答案 0 :(得分:2)

你必须循环结果。见下面的代码

$query = "select telco_prov, count(*) c from telco group by telco_prov having c > 1";
$result = mysql_query($query) or die('Error: '.mysql_error ());
while($row = $mysql_fetch_assoc($result)) {
    echo $row['telco_prov'].": <font color= 'red'>".$row['c']."</font>";
}

答案 1 :(得分:0)

尝试

while($row = mysql_fetch_assoc($result)){
  echo strtoupper($row['telco_prov']).": <font color= 'red'>".$row['c']."</font>";
}

您编写的代码仅提供第一行。 要获取所有记录,您需要循环记录

答案 2 :(得分:0)

错误在这里

echo "SMART: <font color= 'red'>".$row['c']."</font>";
echo "<br>GLOBE: <font color= 'red'>".$row['c']."</font>";

此代码将回显所有telco_prov及其计数

while ($row = mysql_fetch_assoc($result)) {
   echo '"'.$row['telco_prod'].'"':<font color="red">'.$row['c'].'</font>';
}